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
J'essaie d'apprendre les fermetures JavaScript, mais le code ci-dessus me laisse perplexe. Lorsque la première fois result()
s'appelle, c'est 999. C'est bon pour moi.
Après nAdd()
s'appelle, result2()
affiche 1000. Et je pense que cela est dû à la fonction result2()
et la fonction result()
sont égales à la fonction f1()
.
Mais pourquoi le dernier result()
afficher 999 au lieu de 1000 ?