JavaScript 3

Javascript - 클로저(Closure)란? OOP와의 비교 및 고찰

클로저 (Closure)자신이 정의될 때의 스코프를 기억하는 함수외부 함수가 종료되어도 해당 스코프 변수에 접근 가능function outer() { let count = 0; return function inner() { count++; console.log(count); };}const counter = outer();counter(); // 1counter(); // 2inner는 outer의 count 변수에 접근 가능이 현상이 클로저클로저 특징종료된 함수의 변수도 참조 중이면 GC 대상 아님은닉화 가능 (private 변수처럼 사용)상태 유지 가능 (카운터, 메모이제이션 등)활용 예시function createUser(name) { return { sayName: func..

Javascript - 자바스크립트의 모듈 시스템

자바스크립트의 모듈 시스템 정리1. 모듈 시스템이란? 코드를 기능별로 파일 단위로 나누고, 필요한 모듈만 import하여 사용하는 구조. ✔ 목적: 유지보수성 향상, 재사용성 증가, 의존성 명확화.2. 주요 모듈 시스템 종류 ✔ ESM (ECMAScript Module): import/export 사용, 공식 표준. ✔ CommonJS: require/module.exports, Node.js 구버전에서 사용. ✔ AMD: define/require, 비동기 로딩 지원, 브라우저 전용(require.js). ✔ UMD: ESM + CommonJS + 전역 스코프 호환, 라이브러리 배포용.3. 예제 비교 📦 ESM // utils.js export const add = (a, b) => ..

web 2025.05.11

Node.js - Node.js를 직접 만들어보자

Node.js를 직접 만든다면? 런타임 구성 요소와 구현 예제Node.js는 V8 JavaScript 엔진과 libuv 비동기 I/O 라이브러리를 기반으로 동작하는 JavaScript 런타임.Node.js를 직접 만든다면 어떤 요소들이 필요한지, 그리고 실제로 C++로 구현해볼 수 있는 예제들을 통해 구조를 이해 ㄱㄱ1. Node.js의 기본 구성 요소Node.js는 아래와 같은 구성 요소로 이루어져 있음.JavaScript 엔진: V8 (또는 SpiderMonkey, JavaScriptCore)비동기 I/O: libuv 또는 직접 구현한 이벤트 루프C++ 네이티브 모듈: 파일 시스템, 네트워크 API 등바인딩 시스템: C++ API를 JS에서 호출할 수 있도록 연결2. V8을 사용한 간단한 JavaSc..

web 2025.05.07