JavaScript数组中的undefined项

最近在开发中遇到了数组遍历次数不对的问题,原因是未初始化,由此发现数组遍历次数不见的与数组长度一致。这里就总结下这个坑。

举个例子

1
2
3
4
5
6
7
let array = [undefined, , 1, 2, 3];
console.log(array[0]); // undefined
console.log(array[1]); // undefined

array.forEach((item, idx) => {
console.log(item, idx);
});

输出结果如下

分析

  1. 赋值数组项为undefined或者未初始化,值都会是undefined

  2. 遍历时有赋值的都会遍历,但没有赋值则直接跳过

    比如有时需要控制循环固定次数,可能会这么去写,注意这里的fill确保赋值数组项为undefined,假如省略这个,则遍历次数为0

    1
    2
    3
    new Array(10).fill().forEach((_, idx) => {
    console.log(idx + 1);
    });

相关讨论