JavaScript
[JavaScript] 클로저(closure)
힘없는염소
2015. 7. 28. 23:49
// 클로저(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
반응형