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