JavaScript 中 delete 運算子對陣列的奇怪行為


JavaScript 中的 delete 運算子實際上是一個物件運算子(用於物件)。

但由於陣列在 JavaScript 中也是索引物件,我們也可以對陣列使用 delete 運算子。

考慮一下以下字面量陣列 −

const arr = ['a', 'b', 'c', 'd', 'e'];

示例

讓我們執行以下程式並猜測預期輸出 −

const arr = ['a', 'b', 'c', 'd', 'e'];
delete arr[4];
console.log(arr);
console.log(arr.length);

輸出

該程式在控制檯中的輸出為 −

[ 'a', 'b', 'c', 'd', <1 empty item> ]
5

理解輸出 −

由於我們刪除了陣列的一個索引值,因此我們希望 array.length 輸出 4 而不是 5。但 delete 運算子僅從記憶體位置中刪除值,該位置仍被陣列佔用。

這不會改變陣列的長度,我們仍然可以在陣列中看到 5 個元素,只是現在一個記憶體位置已變為空。

已更新於:10-12-2020

89 次瀏覽

開啟你的 事業生涯

完成課程,獲得認證

開始
廣告