JavaScript 中 delete 运算符对数组的尴尬行为

javascriptweb developmentfront end technologyobject oriented programming

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 个元素,只有一个内存位置现在为空。


相关文章