delete 操作符
delete 操作符用于 删除 对象的某个 属性 ;如果没有指向这个 属性 的引用,那它最终会被释放。(MDN)
delete 操作符可以 删除 对象的 一个 属性 。
JavaScript 中的关键字与其他语言略有不同,如 C++ 中的 delete 关键字会释放内存,JavaScript中不会,只有当 一个 值的引用归零时,才会被释放。
1. 使用 delete
delete 操作符在与操作数运算结束后,会返回 一个 布尔值,成功返回 true。在 属性 是不可配置的情况下会返回 false,在严格模式下,则会抛出 TypeError 异常。
var person = { age : , } ; delete person . age ; console . log ( person ) ; // 输出 :{}
当 一个 属性 为不可配置的时候:
var person = { } ; Object . defineProperty ( person , 'age' , { value : , writable : true , con fig urable : false , } ) ; delete person . age ; // 返回false console . log ( person ) ; // 输出 :{age: 17}
2. 在严格模式下的 delete
如果在严格模式下,对 一个 不可配置 属性 进行 delete 操作,则会抛出异常。
'use strict' ; // 开启严格模式 var person = { } ; Object . defineProperty ( person , 'age' , { value : , writable : true , con fig urable : false , } ) ; delete person . age ; // TypeError: Cannot delete property 'age'
3. 对使用 var 声明的变量进行 delete
使用 var 声明的变量 默 认是不可配置的,所以对 var 声明的变量进行 delete 操作是无效的。
var number = ; delete number ; // false console . log ( number ) ;
这里的 number 是 window 下的 一个 属性 ,可以使用 Object.g eto wnPropertyDescriptor 来查看 属性 的描述符。
var number = ; Object . g eto wnPropertyDescriptor ( window , 'number' ) ;
4. 使用 delete 删除 数组成员
delete 可以用于 删除 数组成员,并且是真正意义的 删除 ,可以让指定的成员变成 empty 。
var arr = [ , , , , ] ; delete arr [ ] ; // true console . log ( arr ) ;
有关数组 empty 相关的 内容 可以查阅数组章节。
5. 小结
delete 操作符就是用来 删除 对象下的 属性 ,但这个 属性 还有在其他地方被引用,就不会被释放。
debugger ? ?typeof声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did92439