블록/함수 외부에서 블록/함수 내부의 변수를 참조할수X
{}, if(){}, for(){}, function(){}
내부 함수에서 외부 함수의 스코프에 접근할 수 있는 것 !(렉시컬 환경이 저장되어 있기 때문에)
캡슐화를 위해서 (class private 필드와 같은 역할)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Classes/Private_class_fields
const counter = (function () {
let privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment() {
changeBy(1);
},
};
})();
counter.increment();
변수 privateCounter와 함수 changeBy를 숨기고 싶을 때
class Counter{
#counter=0;
increase(){
this.#counter++;
}
}
const couter = new Counter();
couter.increase();
출처: 드림코딩