반응형
기존 객체지향이나 절차적 프로그래밍을 해왔던 페이지 개발자라면 처음에는 이 개념이 어색할 것이다.
반면, 함수현 언어로 프로그래밍을 해 왔던 사람에게는 익숙한 개념이다.
간단히 설명하면 클로저란? 함수에 필요한 환경과 지역변수가 결함된 Function 인스턴스이다.
- 클로저에서는 함수가 선언된 범위를 벗어난 이후에도 이들 변수를 참조할 수 있다.
<script> $(function() { var local = 1; window.setInterval(function() { $('#display').append('<div>At ' + new Date() + ' local=' + local + '</div>'); local++; }, 3000); }); </script> |
이 예제에서 의문을 가질 수 있는 점은
- 준비 핸들러의 실행이 끝나고 페이지를 로드하고나면 콜백이 3초마다 호출되는데, 이 때 local 값은 콜백 함수가 실행되는 동안 정의되지 않았다고 짐작할 것이다.
- local이 선언된 블록은 준비 핸들러가 끝나면서 범위를 벗어났다고 생각하게 된다.
<결 론>
- 함수의 선언으로 생성된 클로저는 local을 포함한다. 그러므로 함수의 생명주기 동안 변수가 해제되지 않고 범위에 있도록 유지되는 것이다.
반응형
'IT개발 > Javascript' 카테고리의 다른 글
[Javascript] JSON 정리 (0) | 2014.01.23 |
---|---|
[Jquery] 브라우저 기능 플래그 ( 브라우저 별 개발 시 ) (0) | 2014.01.23 |
[Jquery] $.fn.javascript 에서 '.fn' 의 의미는 무엇인가? (0) | 2014.01.23 |
[Javascript]Fire fox firebug 플러그인 설치 (0) | 2014.01.23 |
[Javascript] 콜백 함수란(CALLBACK Function)? (0) | 2014.01.23 |