根据EcmaScript规范,由于dontdelete内部参数,某些对象属性无法删除。例如 :

var y = 5

不应该被删除。但从我能够检查-它是。

这是Mozilla开发人员中心的链接 :https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/delete

任何想法,为什么这不是工作,因为它应该?

有帮助吗?

解决方案

有时你必须检查你读的内容。没有 DontDelete ECMA规范(262,ed5)中的内部参数。也许[Configurable 财产是指什么?该 delete 运算符对变量或函数不起作用,它对对象属性起作用:

var y=5, 
    z = {y:5};
delete y;
delete z.y;
alert(y);   //=> 5
alert(z.y); //=> undefined

从我的回答来看,这 所以问题 出现了,T.J.给出了一个很好的答案。拥挤。

其他提示

根据ES5表17:

createmutablebinding(n,d) 在一个新的可变绑定中创建一个新的可变绑定 环境记录。字符串值n 是界限的文本。如果是 可选的布尔参数d为true 随后可以是绑定 删除。

和10.5声明绑定实例化

  1. 对于每个varidedecraration和variabledeclarationnoin d在代码中,在 源文本订单 [...] II。打电话给env的setmutablebinding 通过DN,undefined的具体方法, 并严格作为论点。

    对我说声明的变量应该不删除。在全局代码中,全局对象是激活对象是变量obejct,所以声明的全局不应该删除。当然,浏览器可能不遵守这个...

var y = 5
alert(delete (y));
.

显示 false 。然后,无法删除。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top