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 個元素,只是現在一個記憶體位置已變為空。
廣告