안녕하세요송기석입니다.

 

있으면 추운 2월이 가고 꽃이 피는 3월이 옵니다. 3월에는 더욱 즐거운 날들이 되기를 기원합니다.

 

클로져(Closures)

 

클로저가 나타나는 가장 기본적인 환경은 바로 함수 안에 함수가 다시 선언되어 호출되었을 때입니다.

 

function outer () {

    var count = 0;                      // #1

    var inner = function () {        // #2

        return ++count;

 

    };

    return inner;                         // #3

}

var increase = outer();               // #4

 

var a = increase();    // === 1       #5

var b = increase();    // === 2

 

console.log('a = ' + a);

console.log('b = ' + b);

 

부르기 편하도록 outer 외부 함수, inner 내부함수로 부르겠습니다.

#1 : 외부 함수의 지역 변수입니다.

#2 : 외부 함수 안의 함수로 보통 내부 함수라고 부릅니다.

#3 : 내부 함수에서 외부 함수의 지역 변수를 부를 있습니다.

#4 : 외부 함수를 호출하면 리턴값으로 내부 함수를 호출하게 됩니다.

#5 : 호출 때마다 1 증가합니다. 외부에서는 외부함수의 count 변수를 접근할 방법이 없지만 내부 함수를 사용하여 외부 함수의 지역변수인 count 변수를 부를 있습니다.

 

이것이 가장 기본이 되는 클로져입니다.