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

 

곧 있으면 추운 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 변수를 부를 수 있습니다.

 

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