为什么Array(100).map((_,i)=> i + 1)不返回[1,2,...,100]?

时间:2014-05-01 18:35:05

标签: javascript arrays

我觉得很奇怪

Array(100).map(function (_, i) { return i + 1; })

返回[undefined, undefined, ... , undefined]而不是[1, 2, ..., 100],i。即映射没有发生。相反,从100 undefined的数组开始(demo)。

Array(100)是否会返回100 undefined个元素以外的其他内容?

1 个答案:

答案 0 :(得分:5)

来自Array.prototype.map reference

  

“仅对已分配的数组的索引调用回调   值;对于未定义的索引,不会调用它   已删除或从未分配过值。“

使用Array(100)创建的数组长度为100,但其中没有项目。另一方面,包含100个undefined项的数组有100个具有值的项(即值undefined),因此将为每个项调用回调。