此问题是Can't understand the behavior of deleting vars in JavaScript
的扩展这种情况发生在Google Chrome上: - 案例1:
var x = 5;
window.x === x // true. x, as it seems, is a property of window
window.hasOwnProperty('x'); // true
delete x; // false
delete window.x; // false;
案例2:
window.x = 5;
delete window.x; // true
案例3:
window.x = 5;
delete x; // true
如果CASE 2和3工作(删除x),那么CASE1为什么不这样做呢?我知道删除只删除任何属性,在CASE 1 x中是一个不应该是属性的变量。但是window.hasOwnProperty函数为它返回true。
在firefox for CASE1中:hasOwnProperty返回true并且删除x也返回true ...
答案 0 :(得分:0)
让我使用我的answer:
您可以通过var创建全局范围内的变量,而不是窗口的属性 宾语。这个var只链接到window.x.然后你比较 window.x === x它将返回true。
另外object.hasOwnProperty(x)
检查哪个对象x
作为属性(来自object.x
)而不是来自原型链的x
。