You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome 125中Array(3).map()与[...Array(3)].map()行为差异问询

Array(3).map() 无输出的原因

这不是Chrome浏览器的异常行为,而是JavaScript数组的标准特性:

  • Array(3) 创建的是稀疏数组:它的length属性为3,但数组内部不存在0、1、2这几个索引对应的键,属于未初始化的「空槽」。
  • map() 方法的执行规则:只会遍历数组中已被赋值的索引/存在的元素,直接跳过空槽,因此不会执行传入的回调函数,自然不会输出foo。
  • [...Array(3)] 会将稀疏数组转为密集数组:扩展运算符会遍历数组的所有索引(包括空槽),把空槽替换为undefined,此时数组的每个索引都有对应值,map()会遍历每个元素并执行回调,从而输出foo。

可以通过代码验证:

const a = Array(3);
console.log(Object.keys(a)); // 输出 [],证明无索引键

const b = [...Array(3)];
console.log(Object.keys(b)); // 输出 ["0","1","2"],证明所有索引均已初始化

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:29:54