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

时间:2013-05-06 20:31:13

标签: javascript

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

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

然后我删除了一个不存在的属性,la:

delete exampleObject.seven;

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

2 个答案:

答案 0 :(得分:30)

什么都没发生。

假设x = {}Type(x.y) a Reference Specifcation Type(不存在对不存在的属性的“引用”)。根据{{​​3}},这符合规则:

  
      
  1. 让ref成为评估UnaryExpression的结果。
  2.   
  3. 如果Type(ref)不是Reference,则返回true。
  4.   
  5. ...
  6.   

此行为(“无操作”)已存在很长时间 - 任何行为不同的环境都是不合规的。来自11.4.1 The delete Operator

  

当使用属性名称P调用O的[[Delete]]方法时,将执行以下步骤:

     
      
  1. 如果O没有名称为P的属性,则返回true。
  2.   
  3. ..
  4.   

答案 1 :(得分:10)

如果exam​​pleObject是一个对象,则删除的返回值为 true ,即使该属性不存在。

相关问题