我正在练习Javascript,所以我写道:
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
请解释为什么我没有得到预期的结果。
答案 0 :(得分:3)
让我们分解这里发生的事情:
dictionary.values()
答案 1 :(得分:0)
您在b
函数中使用f
函数将var b
变量设置为local-variable,因此您无法使用window
访问它变量
如果您将b
变量设置为全局(外部范围内为var b
),则可以使用this
(window
}来执行此操作:
var b
function f(){
// console.log(this);
b=2;
console.log(b);
this.b++;
console.log(b);
b++; }
f();
console.log(b);

我已禁用第一个
console.log(this)
,因为so-snippet在那里提供了大量输出
答案 2 :(得分:-2)
要获得4,你必须这样做 this.b = this.b ++; 要么 B = ++;也会有用。
您将Nan作为最后一个结果,因为b未在该范围内定义。您可以在javascript中阅读有关变量提升的更多详细信息。