Javascript删除操作符

Javascript delete operator

本文关键字:操作符 删除 Javascript      更新时间:2023-09-26

我读过一本关于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

因为0已经被声明并且有属性,所以你不能在对象上使用delete。你可以使用

var o = {x:1 , y:2 };
delete o.x ; 

首先要知道delete操作符的作用是什么。让我解释一下——

"The delete operator removes a property from an object".here i say it removes an object property not a variable.
in your code you declare a variable.not an object so delete does not work.i think you understand.

o = {x:1 , y:2 }; delete o ;

,但我认为上面的代码是正确的。为什么?因为这里0是全局对象的一个属性它也是一个对象,所以它能正常工作。可以帮助您的链接是delete operator

这是我的第一个答案。