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
Я пытаюсь изучить закрытие JavaScript, но приведенный выше код просто запутал меня.
Когда вызывается первый раз result()
, это 999. Это нормально для меня.
После вызова nAdd()
result2()
показывает 1000. И я думаю, что это связано с функцией result2()
, а функция result()
равна функции f1()
.
Но почему последний result()
показывает 999 вместо 1000?