delete操作符
delete操作符的作用
其用来删除对象属性或数组元素
例如:
var obj = {
name: '德洛丽丝'
}
console.log(obj.name);//'德洛丽丝'
delete obj.name;
console.log(obj.name);//undefined
var arr = [1, 2, 3];
console.log(arr[2]);//3
delete arr[2];
console.log(arr[2]);//undefined
a = 10;
console.log(a);//10
delete a;
console.log(a);//报错-a未被定义
注意:
1.删除数组元素后,数组的长度并不会改变,但是会在删除的位置留下一个‘洞’。且若再次访问,值为undefined
2.delete希望它的操作数是一个左值,如果不是左值,delete将不会做任何操作,同时返回true(
delete删除成功时返回true,失败时返回false)
delete不能删除的属性
1.内置属性与客户端属性不能删除
2.通过var语句声明的变量不能删除
var a = 10;
console.log(a);//10
delete a;//false
console.log(a);//10
3.通过function定义的函数和函数的参数不能被删除
function test(){
console.log('test');
}
test();//'test'
delete test;//false
test();//'test'
function test(a){
console.log(a);//100
delete a;//false
console.log(a);//100
}
test(100);
4.不能通过实例删除原型链上的属性(只能直接在原型链上删除才行)
5.不能删除不可配置属性
严格模式下的delete
严格模式下删除var声明的变量,函数,函数参数将会SyntaxError异常。只有操作数是一个属性访问表达式的时候才会正常工作