我以為的刪除以及我的測試
var a = 1;
b = 2;
let c =3;
const d = 4;
console.log(delete a); // false
console.log(delete b); // true
console.log(delete c); // false
console.log(delete d); // false
console.log(a); // 1
console.log(b); // b is not defined
console.log(c); // 3
console.log(d); // 4
var a = ;
var d = a;
a.b = 999;
console.log(a); // object
console.log(d); // object
console.log(delete a); // false
a = undefined;
console.log(a); // undefined
console.log(d); // object
從以上**結果得出:
物件是引用型別,原物件改變,那麼引用此物件的所有變數都會改變。實際var d = a
這裡是吧a的物件位址賦值給了d,兩個變數值實際是同乙個物件
delete
a變數整體被賦值成別的值時,d變數仍然是原物件,這佐證了var d = a
實際傳遞的是物件的位址(不是a變數的位址)
讓我們看看mdn是怎麼說的
delete 操作符(mdn web docs)
delete 操作符用於刪除物件的某個屬性;如果沒有指向這個屬性的引用,那它最終會被釋放。原來delete操作符就是為了刪除物件的屬性...
var a = , d: function()}
console.log(a); // object , d: d() }
console.log(delete a.a); // true
console.log(a); // object , d: d() }
console.log(delete a.b); // true
console.log(a); // object
console.log(delete a.d); // true
console.log(a); // object
console.log(delete a.tostring); // true
js中陣列也是物件,那麼陣列也可以用delete操作符
var a = [1, , [3, 4]];
console.log(delete a[0]); // true
console.log(a); // array(3) [ <1 empty slot>, , (2) […] ]
console.log(delete a[1]); // true
console.log(a); // array(3) [ <2 empty slots>, (2) […] ]
console.log(delete a[2]); // true
console.log(a); // array(3) [ <3 empty slots> ]
console.log(a.length); // 3
由此看出,delete同樣可以操作刪除陣列元素,但是會留下空插槽?陣列的長度不會改變,因此不推薦使用delete操作符。
事實上文件還有這樣說
在js中當乙個值沒有被任何變數引用時,垃圾**機制就會**這個位址。
(記憶體管理頁)[
這個演算法把「物件是否不再需要」簡化定義為「物件是否可以獲得」。從2023年起,所有現代瀏覽器都使用了標記-清除垃圾**演算法。所有對j**ascript垃圾**演算法的改進都是基於標記-清除演算法的改進,並沒有改進標記-清除演算法本身和它對「物件是否不再需要」的簡化定義。
JS中delete操作符的作用
總結 刪除物件屬性或變數 其實是刪除對映,如果屬性值被賦值給其他變數,該操作不會影響變數的值 釋放記憶體空間,其值變成undefined delete object.property delete object property 如下 delete obj.frends只是刪除了obj的friend...
Js原型與in操作符
in操作符主要用來判斷物件屬性是否存在,或者用來獲取物件的可列舉的屬性。所以該操作符主要有兩種使用方式 單獨使用時,用來判斷物件屬性是否存在,無論是存在例項中還是原型中,返回true或者false 在for in迴圈中,獲取物件的所有可訪問的 可列舉的屬性。用來判斷是否存在可訪問的屬性 functi...
delete 操作符 刪除對像屬性及相關知識
首先 delete操作符通常用來刪除物件的屬性,而不是一般的變數和函式。例子 物件 var o delete o.x true o.x undefined 變數 var x 1 delete x false x 1 函式 function x delete x false typeof x func...