Javascript 删除运算符

标签 javascript memory-management properties

我读了一本关于 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 运算符从对象中删除隐式属性,但不会删除在全局对象上创建的变量。

编辑,找到更彻底的答案

https://stackoverflow.com/a/4862268/1443478

关于Javascript 删除运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25292624/

相关文章:

.net - 使用属性引用字典中键值对的最佳方法

ios - 使用属性在代码中创建 UI

具有奇偶类的 Javascript DOM 操作

javascript - 选中/未选中的复选框

c++ - 有没有办法将一 block 分配的内存标记为只读?

c++ - VirtualFree 是否解锁 VirtualLock?

java - 类和属性 - Java

javascript - 从 JSON url 读取内容并写出这些内容

javascript - 在 HTML 元素中用 <span> 替换 <b> 等文本标签的嵌套?

iphone - 创建许多 UIColors 的最佳实践?