delete 操作符是从某个对象上移除指定属性,成功删除的时候返回 true ,否则返回 false。
如果删除的属性在对象上不存在,那么 delete 将不起作用,但仍会返回 true。
var person = { age:100, name:"yangguo", } console.log(person.name);//yangguo console.log(delete person.name);//true console.log(person.name);//undefined console.log(delete person.girlfriend);//true 删除一个不存在的属性时也会返回 true
不可配置的属性:当一个属性被设置为不可设置,delete操作将不会有任何效果,并且会返回false。在严格模式下会抛出语法错误。
var person={}; Object.defineProperty(person,"name",{value:"yangguo",configuar:false}); console.log(person);//{name: "yangguo"} console.log(delete person.name);//false console.log(person.name);//yangguo
任何使用 var 声明的属性 不能从全局作用域和函数作用域中删除。未使用 var 声明的属性将会被删除
var person = "yangguo"; console.log(delete person);//false console.log(person);//yangguo color = "red"; console.log(delete color)//true console.log(color);//Uncaught ReferenceError: color is not defined
delete 操作符不能删除任何在全局作用域中的函数(无论这个函数是来自于函数声明或函数表达式)
function fun(){}; console.log(delete fun);//false console.log(fun);//? fun(){} var func=function(){}; console.log(delete func);//false console.log(func);//? (){}