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);
};
};