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 次浏览

开启你的 事业生涯

完成课程,获得认证

开始
广告