在JavaScript中,如果“删除”一个不存在的属性会发生什么?

uyto3xhc  于 2023-03-21  发布在  Java
关注(0)|答案(2)|浏览(137)

在JavaScript中,如果我有一个变量会发生什么,比如:

var exampleObject = {one:'foo',two:'bar'};

然后我删除一个不存在的属性,比如:

delete exampleObject.seven;

是否有一个标准的操作过程,在任何地方都发生(什么都没有,错误消息,脚本崩溃等),或者这取决于某种实现(浏览器引擎等)?

fhity93d

fhity93d1#

什么都没发生。
假设x = {}Type(x.y) * 不是 * 引用规范类型(不可能存在对不存在的属性的“引用”)。根据11.4.1删除操作符,这满足规则:
1.令ref为计算UnaryExpression的结果。
1.* 如果Type(ref)不是Reference,则返回true。*
1....
这种行为(“无操作”)已经存在很长时间了-任何行为不同的环境都是不兼容的。从3rd Edition ECMAScript Specification
当使用属性名P调用O的Delete方法时,执行以下步骤:
1.* 如果O没有名为P的属性,则返回true。*
1.......

moiiocjp

moiiocjp2#

如果exampleObject是一个对象,则delete的返回值为true,即使该属性不存在。

相关问题