→ jsFiddleUn JavaScript chiusura confusione
function f1(){
var n=999;
nAdd=function(){n+=1;};
function f2(){
alert(n);
}
return f2;
}
var result = f1();
var result2 = f1();
result(); // 999
nAdd();
result2(); // 1000
result2(); // 1000
result(); // 999
Sto cercando di imparare JavaScript chiusure, ma il codice di cui sopra appena mi ha fatto confuso. Quando la prima volta si chiama result()
, è 999. Va bene per me.
Dopo nAdd()
si chiama, result2()
spettacoli 1000. E credo che questo sia dovuto a funzionare result2()
e la funzione result()
sono uguali per funzionare f1()
.
Ma perché l'ultimo result()
mostra 999 anziché 1000?
+1. Ogni volta che viene immesso un contesto di esecuzione, viene creato un nuovo set di variabili. – RobG