我練的Javascript的範圍,所以我寫了:我感到困惑,在JavaScript中varible
function f(){
console.log(this);
var b=2;
console.log(b);
this.b++;
console.log(b);
b++;
}
f();
console.log(b);
,結果讓我大吃一驚:
/*the console result*/
window
2
2
NaN
在我看來,this
點f();
。 b
是f();
的私有變量。 this.b++
和b++
對相同的變量進行操作。
/*the right anwser in my mind*/
f
2
4
TypeError
請解釋爲什麼我沒有得到預期的結果。
如果'console.log(this.b)'是'NaN',那麼'this.b ++'不會增加任何內容。 – Luke
這是'窗口'而不是函數。所以變量'b'對於窗口範圍是未知的,因爲它是函數內的局部變量 –
'this.b'和'b'不是同一個變量。 –