我练的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'不是同一个变量。 –