강좌 & 팁
안녕하세요. 송기석입니다.
곧 있으면 추운 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 변수를 부를 수 있습니다.
이것이 가장 기본이 되는 클로져입니다.