为什么foo在没有使用或初始化直到几行之后才是窗口的属性
for(var propName in window) {
if(propName == 'foo') { //obv defined if its here
console.log('WTF? Its already a part of window!!');
}
}
console.log(typeof foo);
var foo = 'bar';
答案 0 :(得分:1)
由于var top hoisting,您的代码实际上看起来像这个。
当您全局声明变量时,它是 此 对象隐含的一部分。
因此, foo 变量是window
对象的一部分,由this
对象引用。
var foo;
for (var propName in window) {
if (propName == 'foo') { //obv defined if its here
console.log('WTF? Its already a part of window!!');
}
}
console.log(typeof foo);
foo = 'bar';
this===window //true in this case