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 个元素,只是现在一个内存位置已变为空。
广告