반응형
내가 선언한 함수를 특정 변수에 오브젝트로 담아 재사용 시,
해당 오브젝트 선언당시의 환경을 그대로 기억하여 마치 State 관리를
하는것과 같은 효과를 만들 수 있는 환경에 대한 개념(?) 이다.
즉 클로저란 클로저를 발생시키는 환경을 말한다.
function outFunc () {
var x = '10';
return function innerFunc(y) {
return x = x + y;
}
}
const objectVar = outFunc();
objectVar(1); // 11;
objectVar(1); // 12;
objectVar(1); // 13;
위의 예제를 보면 한번 선언된 objectVar 변수를 재활용하여
해당 함수를 최초 선언한 당시의 환경 ( 지역,전역 변수등 ) 을 그대로
기억하여 State 변수 관리가 되는것을 볼 수 있다.
물론 위와같은 부분을 전역 변수를 통하여 해결할 수도 있지만,
전역 변수의 경우 해당 스코프 체인내의 어떤 부분에서라도 변경이 잃어날 수 있기에
신뢰성이 떨어지는 반면, 클로저 환경은 그에 비해 Private한 환경을 제공하기에 ( 선언된 오브젝트 외엔 접근 불가 )
실수를 할 확률이 줄어든다.
그런데...이게 클래스 개념이랑 무슨 차이?
반응형
'Web > javascript' 카테고리의 다른 글
Top-level await 로 귀찮은 문법을 간소화 하자 (0) | 2023.11.09 |
---|---|
Async Await 사용 시 주의사항 (퍼포먼스) (1) | 2023.11.09 |
jsonp 사용시 주의할 점 (0) | 2016.12.01 |
타 도메인간 iframe auto resize (0) | 2012.01.06 |
google javascript hosting (0) | 2011.12.01 |