closure 폐쇄
function outer() {
let outerVar = 0; // outerVar: outer에 의해 생성된 지역 변수
function inner() {
// inner(): 내부 함수, 클로저!
console.log(outerVar); // 부모 함수에서 선언된 변수 사용
}
return inner;
}
const func = outer();
func(); // 0
function makeCounter() {
let count = 0; //내가 은닉하고하는 데이터
function changeBy(val) {
count += val;
}
return {
increase() {
changeBy(1);
},
decrease() {
changeBy(-1);
},
value() {
return count;
},
};
}
const counter = makeCounter();
console.log(counter.value()); // 0
counter.increase();
counter.increase();
console.log(counter.value());
counter.decrease();
console.log(counter.value());
MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures