This question already has answers here:
Javascript function scoping and hoisting
(16个答案)
4年前关闭。
为什么直到几行之后才使用或初始化foo才是window的属性
(16个答案)
4年前关闭。
为什么直到几行之后才使用或初始化foo才是window的属性
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';
最佳答案
由于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
关于javascript - 为什么它已经是window属性? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35803852/
10-13 08:33