這裏是代碼:JavaScript的關閉和範圍
function fn() {
var x = 1;
function fn2() {
x++;
console.log(x);
}
return fn2;
}
var foo = fn();
var bar = fn();
foo(); //2
bar(); //2
foo(); //3
我得到了我想不通,爲什麼結果是不是2 3 4。我的意思是一個問題,根據關閉原則,foo和bar應該保持函數的範圍,所以我認爲foo和bar具有相同的x。希望你能幫我解決問題。
我很困惑。這裏應該提到的是什麼?它將在嚴格模式下爲undefined,否則爲窗口對象。這與聲明全局'x'變量相同。另外,我想你的意思是「每次fn()'都被**調用**,而不是」賦值「 –
'this.x'會使'x'全局,就好像'x'被定義在' fn'(全球),所以我們不再談論關閉了, –
是的,我正在修補,意識到你是絕對正確的。 – Snowmonkey