ECMAScript에서 함수 선언에서 선언되고 함수 외부에 표시되는 모든 변수는 함수 내부의 최종 값에 액세스할 수 있습니다!
클로저 함수는 변수의 최종값에만 접근할 수 있습니다!!!
예:
function fnTest(arr) {
for (var i=0;i < arr.length;i ) {
arr[i]=function () { Alert(i " | " arr[i]); };
}
}
var arr = [0,1,2,3];
fnTest(arr);
for (var i=0; i < arr.length;i ) {
arr[i](); //항상 4를 출력하고 정의되지 않은 값이 있습니다함수가 종료된 후 i 값은 4이므로 액세스된 값은 다음과 같습니다. 4개만
//4연속 결과가 나옵니다. "4|undefine"
}
클로저 내부에서 클로저 외부의 변수 값에 접근할 수 있을 뿐만 아니라 해당 값을 설정할 수도 있습니다.
예:
function fnTest() {
var a="June";
return {
set:function (param) {a = param},
get:function () {return a}
};
}
var obj = fnTest();
Alert(obj.get());//6월 팝업
obj.set(586);
Alert(obj.get());//팝업 586