delete
操作符用于删除对象的某个属性。对于通常情况都是true
,除非删除的属性是一个自己不可配置的属性,这种情况下非严格模式返回false
,严格模式会抛出异常。
若删除的属性不存在,
delete
不会起任何作用但会返回true
如果对象原型链上有与待删除属性同名属性,删除操作只会删除对象本身的属性,原型链上的属性仍存在
任何使用
var
声明的属性不能从全局作用域或函数的作用域中删除,不能删除任何在全局作用域中的函数,在对象中的函数是可以用delete
删除的var x = 1;
delete x; //false
x; //1
function y(){}
delete y; //false
typeof y; //"function"let
和const
声明的属性不能从它被声明的作用域中删除delete
删除数组元素后,该位置会变成空值(empty
)在eval中通过var定义的变量,可以在全局环境中通过delete删除:
eval('var a = 1');
eval('function b(){}');
delete a; //true
delete b; //true
typeof a; //undefined
typeof b; //undefined
参考链接