더북(TheBook)

3.2.2 클로저와 정적 스코프

클로저(closure)는 간단히 말해 외부 값에 접근하는 함수입니다. 모든 자바스크립트 함수는 클로저가 될 수 있습니다. 무슨 의미인지 예제 코드로 알아보겠습니다.

func() 함수는 자신의 외부에 있는 변수 a를 사용하고 있습니다. 그래서 func() 함수는 클로저입니다.

const a = 1;
const func = () => { 
  console.log(a);
};

다음 함수도 클로저입니다. 그런데 어디서 본 것 같지 않나요? 2.6.2 함수고차 함수 사용하기에서 예로 들었던 함수입니다. 반환값인 익명 함수는 자신의 외부에 있는 msg 매개변수를 사용하고 있습니다. 따라서 클로저입니다.

const func = (msg) => { 
  return () => {
    console.log(msg);
  };
};
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.