【问题标题】:Return value of delete operator?删除运算符的返回值?
【发布时间】:2015-04-24 18:40:08
【问题描述】:

来自MDN delete documentation

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

返回值:

如果属性是自己的不可配置的,则以严格模式抛出 属性(在非严格情况下返回 false)。在所有其他情况下返回 true 案例。

有些东西我不明白:

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

    var a={'b':'b'};
    delete a.b; //it return true
    

我认为 Chrome 控制台以非严格模式运行代码。如果是这种情况,那么根据 MDN,它应该返回 false。为什么返回true

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

【问题讨论】:

标签: javascript


【解决方案1】:
  1. A property that 不能删除、更改为访问器属性或更改属性([[Value]] 除外)。
  2. 您误读了优先级。在严格模式下,如果属性不可配置,则会抛出。在非严格模式下,如果属性不可配置,则返回 false。否则返回 true。
  3. 当属性可配置时。

【讨论】:

    【解决方案2】:

    要详细了解删除运算符,您可能应该查看 kangax 的这篇精彩博客:http://perfectionkills.com/understanding-delete/

    很好地描述了 [dontdelete] 属性,在尝试删除变量或属性时,该属性是实习生的基本属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 2013-07-31
      • 2019-12-29
      • 1970-01-01
      • 2016-07-14
      • 1970-01-01
      • 2015-07-16
      相关资源
      最近更新 更多