delete 运算符 |
您所在的位置:网站首页 › 计算器上的del是什么意思啊 › delete 运算符 |
delete 运算符与其他像 typeof 这样的一元运算符具有相同的优先级。因此,它接受任何由更高优先级的运算符形成的表达式。然而,在严格模式下,以下形式会导致早期语法错误: js delete identifier; delete object.#privateProperty;因为类自动处于严格模式,而私有属性只能在类体内合法引用,这意味着私有属性永远不能被删除。虽然 delete identifier 在 identifier 指的是全局对象的可配置属性时可能有效,但是你应该避免这种形式,而是用 globalThis 作为前缀。 虽然其他表达式是可以接受的,但是它们并不导致有意义的行为: js delete console.log(1); // 输出 1,返回 true,但是没有删除任何东西delete 运算符从一个对象中删除一个给定的属性。在成功删除时,它将返回 true,否则将返回 false。不像一般人认为的那样(也许是由于其他编程语言,如 C++ 中的 delete),delete 操作符与直接释放内存没有关系。内存管理是通过破坏引用间接完成的。更多细节请参见内存管理页面。 但是,以下情况需要重点考虑: 如果你试图删除的属性不存在,那么 delete 将不会起任何作用,但仍会返回 true。 delete 只影响自身属性。如果对象的原型链上有一个与待删除属性同名的属性,那么删除属性之后,对象会使用原型链上的那个属性。 不可配置的属性不能被移除。这意味着像 Math、Array、Object 这些内置对象的属性以及使用 Object.defineProperty() 方法设置为不可配置的属性不能被删除。 删除包括函数参数内的变量永远不会奏效。delete variable 会在严格模式下抛出 SyntaxError 错误,非严格模式下不会有任何效果。 任何使用 var 声明的属性不能从全局作用域或函数的作用域中删除,因为即使它们可能附加到全局对象上,它们也是不可配置的。 任何使用 let 或 const 声明的属性不能够从它被声明的作用域中删除,因为它们没有附加到任何对象上。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |