반응형

내가 선언한 함수를 특정 변수에 오브젝트로 담아 재사용 시,
해당 오브젝트 선언당시의 환경을 그대로 기억하여 마치 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한 환경을 제공하기에 ( 선언된 오브젝트 외엔 접근 불가 )
실수를 할 확률이 줄어든다.

그런데...이게 클래스 개념이랑 무슨 차이?

반응형

+ Recent posts