一元操作符 delete

一元操作符仅对应一个操作数。

delete 操作符,删除一个对象或一个对象的属性或者一个数组中某一个键值。

1
2
3
4
delete objectName;
delete objectName.property;
delete objectName[index];
delete property; // legal only within a with statement

objectName 是一个对象名,property 是一个已经存在的属性,index 是数组中的一个已经存在的键值的索引值。

第四行的形式只在 with 声明的状态下是合法的, 从对象中删除一个属性。

你能使用 delete 删除各种各样的隐式声明, 但是被 var 声明的除外

如果 delete 操作成功,属性或者元素会变成 undefined。如果 delete 可行会返回 true,如果不成功返回 false

1
2
3
4
5
6
7
8
9
x = 42;
var y = 43;
myobj = new Number();
myobj.h = 4; // create property h
delete x; // returns true (can delete if declared implicitly)
delete y; // returns false (cannot delete if declared with var)
delete Math.PI; // returns false (cannot delete predefined properties)
delete myobj.h; // returns true (can delete user-defined properties)
delete myobj; // returns true (can delete if declared implicitly)

delete 删除数组中的元素,这个元素就不在数组中了,但还能访问到该元素的索引地址,并返回 undefined

1
2
3
4
5
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
delete trees[3];
if (3 in trees) {
// 不会被执行
}