// 클로저(closure)는 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킨다.
// 자바스크립트에서 함수는 일급객체이다. 함수를 호출했을때 리턴되는 함수(클로저)를 참조하고 있는 것이다.
// 즉 반환되는 내부함수가 클로저이다.
function outter() {
var title = '난 영혼처럼 살아있다.';
return function() {
console.log(title); // 클로저로 참조되는 외부변수를 자유변수(Free Variable) 라 부른다.
};
};
var inner = outter(); // 생명 주기가 끝난 외부함수의 변수를 참조하는 내부함수를 클로저라 한다.
inner(); // 결과 : 난 영혼처럼 살아있다.

// 매번 호출할때 마다 변수값을 유지하고 싶을때 사용한다.
// 클로저가 참조하고 있는 변수를 노출시키지 않는다 (캡슐화)
// 클로저에서는 접근할수 있지만 코드 외부에서는 접근할수 없다.

var a = function() {
var count = 0;
return function() {
return count++;
};
};
a = a();
console.log(next()); // 1
console.log(next()); // 2
console.log(next()); // 3
console.log(next()); // 4

참고 : http://juheejin.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%8A%A4%ED%84%B0%EB%94%945-%EC%8B%A4%ED%96%89%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%99%80-%ED%81%B4%EB%A1%9C%EC%A0%80




반응형
Posted by 힘없는염소