잘못 된 내용에 대한 지적은 언제든 환영입니다.
// outerFunc 실행 컨텍스트가 소멸되어도 렉시컬 환경은 남기에, 해당 렉시컬 환경의 변수를 참조할 수 있다.
function outerFunc() {
var x = 10;
var innerFunc = function () {
console.log(x);
};
return innerFunc;
}
var inner = outerFunc();
inner(); // 10
const Counter = (function () {
var num = 0;
return {
increase() {
return ++num;
},
decrease() {
return --num;
},
};
})();
console.log(Counter.num); // undefined
console.log(Counter.increase()); // 1
console.log(Counter.increase()); // 2
console.log(Counter.decrease()); // 1
console.log(Counter.decrease()); // 0
References
"모던 자바스크립트 Deep Dive" .이응모
"
[JavaScript] 클로저(Closures)란 무엇일까?" .hanamon