클로저

CODEDRAGON Development/JavaScript, jQuery, ...

반응형

 

클로저

·       내부 함수 사용시 지역변수를 남겨두는 것으로

·       지역변수는 함수가 실행될 때 생성되고 함수가 종료될 때 사라지는데

·       내부함수를 만들고 내부함수를 감싸고 있는 함수의 지역변수를 내부함수에서 호출할 때 내부함수를 감싸고 있는 외부 함수가 종료되었지만 내부함수에서 지역변수를 호출할 수 있도록 지역변수를 남겨두는 현상입니다.

 

 

클로저 특징

·       종료된 외부 함수의 변수를 참조하는 함수

·       지역 변수를 남겨두는 현상

·       함수 outerFunction()로 인해 생성된 공간

·       함수 outerFunction() 내부의 변수들이 살아있는 현상(output )

·       리턴되는 함수 자체

·       함수가 종료된 이후 살아남은 지역 변수

 

익명함수를 반환하는 함수

function outerFunction(name) {

var output = 'Hello ' + name + '... !';

return function() {

alert(output);

};

}

outerFunction('kevin')();

 

 

클로저의 사용

·       함수 안에 있는 변수는 지역 변수이므로 외부에서 사용할 수 없습니다.

·       클로저를 사용하면 이 규칙을 위반하여 지역변수를 사용할 수 있도록 할 수 있습니다

·       익명함수를 반환하는 함수에 지역변수가 있으면 익명함수는 클로저 함수로서 지역변수를 가져다 쓸 수 있습니다.

 

 

 

지역변수 규칙에 위배

·       f()종료 하여 결과값이 반환되었는데 f()에 있는 지역 변수 var n가 호출됩니다.

·       클로저 현상(내부 함수 사용시 지역변수를 남겨두는 것으로

·       지역변수는 함수가 실행될 때 생성되고 함수가 종료될 때 사라지는데

·       내부함수를 만들고 내부함수를 감싸고 있는 함수의 지역변수를 내부함수에서 호출할 때

·       내부함수를 감싸고 있는 외부 함수가 종료되었지만 내부함수에서 지역변수를 호출할 수 있도록 지역변수를 남겨두는 현상)