当我在全局命名空间下定义一个局部变量时,它会被同名的实例变量覆盖。
var outerVar;
outerVar = 'outerVar';
this.outerVar = 'thisOuterVar';
console.log(outerVar); // thisOuterVar
但是,在函数内部不会发生同样的情况。
var fun;
fun = function() {
var innerVar;
innerVar = 'innerVar';
this.innerVar = 'thisInnerVar';
return console.log(innerVar); // innerVar
};
fun();
此代码在 Firebug 中运行。
this.constructor // Window { }
如果我在 node, where this.constructor
is下运行相同的代码[Function: Object]
,它会返回 'outerVar' 而不是 'thisOuterVar' 这很有意义。
为什么它在 Window 下的行为不同?