删除运算符的返回值?

时间:2015-04-24 18:40:09

标签: javascript

来自MDN delete documentation

  

删除操作符从对象中删除属性。

返回值:

  

如果属性是不可配置的,则以严格模式投掷   property(非严格返回false)。在所有其他中返回true   例。

有一些我不明白的事情:

  1. 什么是不可配置的属性?
  2. 当我在chrome控制台中运行此代码时,它返回true:

    var a={'b':'b'};
    delete a.b; //it return true
    
  3. 我认为Chrome控制台以非严格模式运行代码。如果是这种情况,那么根据MDN,它应该返回false。为什么返回true

    1. 根据MDN,delete运算符在所有其他情况下返回true。其他案件是什么?我知道一种情况(具有可配置属性的严格模式)。还有其他案例吗?

2 个答案:

答案 0 :(得分:3)

  1. A property that您无法删除,更改为访问者属性或更改属性([[Value]]除外)。
  2. 你误读了优先顺序。在严格模式下,如果属性不可配置,则抛出它。在非严格模式下,如果属性不可配置,则返回false。否则返回true。
  3. 属性可配置时。

答案 1 :(得分:1)

要详细了解删除操作符,您可能应该通过kangax查看这个神奇的博客:http://perfectionkills.com/understanding-delete/

其中详细描述了[dontdelete]属性,该属性在尝试删除变量或属性时作为必要属性。