我读了一本关于 javascript 的书,上面说:
var o = {x:1 , y:2 };
delete o ; // Can't delete a declared variable so returns false;
但是,该书还指出,在任何函数作用域之外声明的变量都是全局对象的属性。
如果它是全局对象的属性,为什么不允许我们删除它?
最佳答案
通过说:
var o = {x:1 , y:2 };
在顶级范围内,您声明了一个全局变量,它不能被删除。它确实在全局对象(在浏览器中别名为 window
对象)上创建了一个属性,但它确实是一个特殊属性。但是,如果您声明如下:
o = {x:1 , y:2 };
那么您将在全局范围内隐式设置一个属性(请记住,window
对象)。两者很相似,但又足够不同。 delete
运算符从对象中删除隐式属性,但不会删除在全局对象上创建的变量。
编辑,找到更彻底的答案
关于Javascript 删除运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25292624/