클로저(Closure)

rada·2025년 4월 6일
0

개발

목록 보기
36/43

클로저(Closure)

example

function makeCounter() {
  let count = 0;
  return function () {
    return count++;
  };
}

const counter1 = makeCounter();
const counter2 = makeCounter();

console.log(counter1()); // ?
console.log(counter1()); // ?
console.log(counter2()); // ?

🔍 실행 흐름

1️⃣ makeCounter() 호출 → 내부에 count = 0 생성됨

  • counter1은 count 변수를 기억하는 함수를 리턴받음
  • 이때 count는 counter1만의 독립된 상태

2️⃣ 다시 makeCounter() 호출 → 또 다른 count = 0 생성

  • counter2도 자신만의 독립된 count를 가짐

📦 실행 결과

console.log(counter1()); // 0
console.log(counter1()); // 1
console.log(counter2()); // 0 ← 이건 다른 인스턴스이므로 다시 0부터 시작

🧠 왜 이렇게 동작할까? (클로저)

클로저란?
함수가 자신이 정의된 스코프의 변수들을 기억하고,
그 스코프가 종료된 후에도 계속 접근할 수 있는 특성

const counter1 = makeCounter(); 
// counter1은 count = 0 이 포함된 스코프를 계속 기억

counter1(); // count++ → 0
counter1(); // count++ → 1

✅ 핵심 요약

개념설명
클로저함수가 외부 변수(count)를 기억하고 유지함
독립 인스턴스counter1, counter2는 서로 다른 count 상태
count++반환 후 증가 (post-increment)
profile
So that my future self will not be ashamed of myself.

0개의 댓글