// 클로저(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()); // 1console.log(next()); // 2console.log(next()); // 3console.log(next()); // 4
반응형
'JavaScript' 카테고리의 다른 글
[javaScript] switch 반복문 (0) | 2015.10.27 |
---|---|
[JavaScript] call, apply (0) | 2015.10.15 |
[JavaScript] split - 구분자를 통해 문자열 자르기 (0) | 2015.07.09 |
[JavaScript] bind메서드 - 함수 this를 변경 (0) | 2015.05.20 |
[JavaScript] setInterval - interval id 삭제 (0) | 2015.05.07 |