0
:javascript (jquery)에서 익명 함수를 호출 할 때 클로저가 어떻게 작동합니까? 이 기능에
var x = {
getStuff : function(){
var i = 0;
$.getJSON('/url.json', {}, function(data){
$.each(data, function(key,val){
alert(i);
});
});
});
}
그래서 2 개 JQuery와 통화 (.getJSON, .each)에 대한 선언 된 익명 함수로 인해 폐쇄 부모 기능 (getStuff)에 대한 액세스 권한이 모두 있음을 올바르게 이해하고?
익명 함수가 해당 위치에서 선언되고 있다는 것은 해당 부모의 범위 체인 내에 있으므로 부모 변수에 액세스 할 수 있습니까?
그래서 "i"를 변경하면 리터럴 구문 때문에 "x"변수를 참조하는 모든 객체에서 "i"가 변경됩니다. – James
@James : No - 새 속성 (예 : _i_에 링크 됨)이있는 _new_ _VariableObject_ (VA)가 만들어지는 함수의 실행 컨텍스트를 입력 할 때이 개체는 생성/입력 된 모든 함수의 범위 체인에 배치됩니다. 이 컨텍스트는 _i_의 특정 인스턴스에 대한 액세스 권한을 갖습니다. 그러나 기능이 입력 될 때마다 새 범위가 형성됩니다. –
@James Sean이 위에 쓴 것은 정확합니다. "getStuff()"를 호출 할 때마다 신선한 "i"를 의미하는 새로운 저장소 블록이 할당됩니다. – Pointy