如果我有一个变量,在JavaScript中会发生什么,比如说:
var exampleObject = {one:'foo',two:'bar'};
然后我删除了一个不存在的属性,la:
delete exampleObject.seven;
是否有标准的操作过程发生在任何地方(没有,错误消息,脚本崩溃等),或者这取决于某种实现(浏览器引擎等)?
答案 0 :(得分:30)
什么都没发生。
假设x = {}
,Type(x.y)
不 a Reference Specifcation Type(不存在对不存在的属性的“引用”)。根据{{3}},这符合规则:
- 让ref成为评估UnaryExpression的结果。
- 如果Type(ref)不是Reference,则返回true。
- ...
醇>
此行为(“无操作”)已存在很长时间 - 任何行为不同的环境都是不合规的。来自11.4.1 The delete Operator:
当使用属性名称P调用O的[[Delete]]方法时,将执行以下步骤:
- 如果O没有名称为P的属性,则返回true。
- ..
醇>
答案 1 :(得分:10)
如果exampleObject是一个对象,则删除的返回值为 true ,即使该属性不存在。