【问题标题】:How to remove a property from a JavaScript object when using Strict Mode [duplicate]使用严格模式时如何从 JavaScript 对象中删除属性[重复]
【发布时间】:2023-04-06 06:24:02
【问题描述】:

阅读这个问题:How do I remove a property from a JavaScript object?

但是我的代码在全局声明中使用'use strict';,这意味着它存在于整个文件中。

delete 语句在严格模式下被禁止(无效)。 Documentation

如何在使用严格模式时从对象中删除属性,而不必求助于克隆和循环属性,跳过要删除的属性?

更新和澄清

我需要先从对象中删除一个属性,然后再将其发送到服务器,服务器抱怨未知属性。

【问题讨论】:

  • 您的问题似乎建立在一个错误的前提之上(即,delete 语句在严格模式下是被禁止的)。你实际上想做什么?您实际上观察到什么问题?重现您的问题的小而完整的代码示例会很有帮助。
  • 这说明delete 语句被禁止或无效?
  • @Bergi 阅读文档。 Third, strict mode forbids deleting plain names. delete name in strict mode is a syntax error:
  • 但是属性不是一个简单的名字。

标签: javascript


【解决方案1】:

delete 在严格模式下被禁止。

  1. 在严格模式下删除不可删除的属性会引发错误。在非严格模式下,它会静默失败。无论哪种方式,除了克隆对象之外都是不可能的。

  2. 您不能删除普通名称;抛出语法错误。如果变量是全局变量,可以这样绕过;

    // Imagine we're global here.
    var foo = 4;
    
    delete foo; // syntax error
    delete window.foo; // works.
    

【讨论】:

  • 感谢您的澄清,现在有意义
猜你喜欢
  • 2011-12-28
  • 2022-07-06
  • 1970-01-01
  • 2019-08-27
  • 2021-06-18
  • 2010-09-17
相关资源
最近更新 更多