第10題- 你不知道的delete操做符

面試題目:

下面代碼的輸出結果是什麼?前端

a = [1, 2, 3, 4];
delete a[1];
console.log(a.length);
複製代碼

答案解析:

這個題目主要考察delete相關的知識點面試

在 JavaScript 中 delete 操做符用於刪除對象的某個屬性,與直觀的見解不一樣,delete操做符與直接釋放內存無關,內存管理是經過斷開引用來間接完成的。數組

delete成功刪除的時候返回 true,不然返回 false。可刪除對象以下描述:bash

  1. 刪除對象的屬性
  2. 能夠刪除沒有使用var關鍵字聲明的全局變量(直接定義在window上面的屬性)
  3. 刪除數組元素
  4. 不能刪除內置對象的屬性
  5. 不能直接刪除從原型上繼承的屬性

示例:this

  1. 對象屬性刪除
function fun(){
    this.name = 'mm'; 
}

var obj = new fun();
console.log(obj.name);//mm
delete obj.name;
console.log(obj.name); //undefined
複製代碼
  1. 變量刪除 (沒法刪除var定義的變量)
var name = 'lily';
delete name;
console.log(name); //lily
複製代碼
  1. 刪除不了原型鏈中的變量
function fun(){
    this.name = 'mm'; 
}
fun.prototype.age = 18;
var obj = new fun();
delete obj.age;
console.log(obj.age) //18
複製代碼

面試題目中,刪除數組元素,不會改變數組元素的長度,僅僅是將元素變爲empty spa


掃一掃 關注個人公衆號【前端名獅】,更多精彩內容陪伴你! prototype

【前端名獅】
相關文章
相關標籤/搜索