클로저
클로저 : 함수 내에 선언된 로컬 변수를 외부에서도 참조할 수 있는 기능
- 보는 관점에 따라 모든 자바스크립트 함수가 클로저라고 볼 수 있음
사용처
this.XXXX를 넘기기 위해 사용한다
private변수(보호 해야 할 변수)에 사용한다
주의점
클로저는 변수만 기억할 뿐 값은 기억 하지 않는다
- 반복문(for문)에서는 클로저를 사용하지 않는다
클로저를 이해하기 위한 예문
function closureTest(a){
return function(b){
return a + b;
}
}
var test = closureTest(1);
alert(test(2));
1. closureTest(1)을 호출한 순간 아래의 영역에 var a =1이 생성되고
function(b){ return a+b; }가 test에 리턴이 된다. 그래서 test()를 사용 가능하게 해준다.
function closureTest(a){
return function(b){
return a + b;
}
}
2. alert(test(2))를 호출하면 function(b){ return a+b; }에 기억하고 있던 a변수를 불러들이고 b의 값에 2가 대입된다
3. 그러므로 위의 결과는 3이 나온다
클로저는 C언어에서 “&” 키워드를 사용하여 정의하는 참조 변수라고 생각하면 개념이해가 쉬울 것 이다
* 출처 : 넥스트리소프트(주) 인큐베이팅 멘토 선임님 & 문학청년님의 강의 정리
'Development > JavaScript' 카테고리의 다른 글
[자바스크립트 완벽 가이드 정리] 배열 (1) | 2013.05.08 |
---|---|
[자바스크립트 완벽 가이드 정리] 구문 (0) | 2013.05.06 |
[자바스크립트] 콜백 함수 (0) | 2013.05.03 |
[Tip] 자바스크립트의 부동 소수점 문제 (0) | 2013.05.03 |
[Tip] 스크립트 폼 엔터 서브밋 (0) | 2013.05.03 |