首页 > JavaScript > JavaScript 入门教程 > JavaScript delete

delete 操作符

delete 操作符用于删除对象的某个属性;如果没有指向这个属性的引用,那它最终会被释放。(MDN)

delete 操作符可以删除对象的一个属性。

JavaScript 中的关键字与其他语言略有不同,如 C++ 中的 delete 关键字会释放内存,JavaScript中不会,只有当一个值的引用归零时,才会被释放。

1. 使用 delete

delete 操作符在与操作数运算结束后,会返回一个布尔值,成功返回 true。在属性是不可配置的情况下会返回 false,在严格模式下,则会抛出 TypeError 异常。

var person = {
  age: 16,
};

delete person.age;

console.log(person); // 输出:{}

当一个属性为不可配置的时候:

var person = {};

Object.defineProperty(person, 'age', {
  value: 17,
  writable: true,
  configurable: false,
});

delete person.age; // 返回false

console.log(person); // 输出:{age: 17}

2. 在严格模式下的 delete

如果在严格模式下,对一个不可配置属性进行 delete 操作,则会抛出异常。

'use strict'; // 开启严格模式
var person = {};

Object.defineProperty(person, 'age', {
  value: 17,
  writable: true,
  configurable: false,
});

delete person.age; // TypeError: Cannot delete property 'age'

图片描述

3. 对使用 var 声明的变量进行 delete

使用 var 声明的变量默认是不可配置的,所以对 var 声明的变量进行 delete 操作是无效的。

var number = 996;

delete number; // false

console.log(number);

图片描述

这里的 numberwindow下的一个属性,可以使用 Object.getOwnPropertyDescriptor 来查看属性的描述符。

var number = 996;

Object.getOwnPropertyDescriptor(window, 'number');

图片描述

4. 使用 delete 删除数组成员

delete 可以用于删除数组成员,并且是真正意义的删除,可以让指定的成员变成 empty

var arr = [2, 4, 6, 8, 10];

delete arr[0]; // true

console.log(arr);

图片描述

有关数组 empty 相关的内容可以查阅数组章节。

5. 小结

delete 操作符就是用来删除对象下的属性,但这个属性还有在其他地方被引用,就不会被释放。

本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈