第10题- 你不知道的delete操作符
2019-08-21 本文已影响0人
青天诀
面试题目:
下面代码的输出结果是什么?
a = [1, 2, 3, 4];
delete a[1];
console.log(a.length);
答案解析:
这个题目主要考察delete相关的知识点
在 JavaScript 中 delete 操作符用于删除对象的某个属性,与直观的看法不同,delete操作符与直接释放内存无关,内存管理是通过断开引用来间接完成的。
delete
成功删除的时候回返回 true,否则返回 false。可删除对象如下描述:
- 删除对象的属性
- 可以删除没有使用var关键字声明的全局变量(直接定义在window上面的属性)
- 删除数组元素
- 不能删除内置对象的属性
- 不能直接删除从原型上继承的属性
示例:
- 对象属性删除
function fun(){
this.name = 'mm';
}
var obj = new fun();
console.log(obj.name);//mm
delete obj.name;
console.log(obj.name); //undefined
- 变量删除 (无法删除var定义的变量)
var name = 'lily';
delete name;
console.log(name); //lily
- 删除不了原型链中的变量
function fun(){
this.name = 'mm';
}
fun.prototype.age = 18;
var obj = new fun();
delete obj.age;
console.log(obj.age) //18
面试题目中,删除数组元素,不会改变数组元素的长度,仅仅是将元素变为empty
![](https://img.haomeiwen.com/i17728790/71897f5d54adfd1b.png)
扫一扫 关注我的公众号【前端名狮】,更多精彩内容陪伴你!