0
자바 스크립트에서 클로저를 이해하려고합니다. 클로저는 함수의 로컬 변수입니다. 함수가 반환 된 후에도 유지됩니다 [reference].자바 스크립트 클로저 - 부모 함수
나는 많은 참고 문헌에서 함수의 종료를 설명 할 때 부모 함수를 고려했다. 그러나 아래 예제에 따르면 함수는 상위 함수의 변수뿐만 아니라 상위 부모 및 상위 변수에도 액세스 할 수 있다고 생각합니다.
내가 옳다고 생각하는지 설명 할 수 있습니까? 은 사전에 감사합니다 ..
test1 = function() {
var x = 10;
return function(){
alert(++x);
};
}
test2 = function() {
var x = 10;
return function(){
return function(){
alert(++x);
}
};
}
t1 = test1();
t1(); //11
t1(); //12
t2 = test2()();
t2(); //11
t2(); //12
'test1'의 맨 위에 일부 코드가 누락되었다고 생각합니다. –
부모 함수가 변수에 액세스 할 수 있으면 자식도 변수에 액세스 할 수 있습니다. 변수는 * immediate * parent에 명시 적으로 정의되어 있지 않습니다. –
여기서 중요한 것은 변수의 범위 (변수가 정의 된 곳)뿐입니다. 변수가 정의 된 값만큼 액세스 할 수 있습니다. –