2016-02-15 52 views
2

正如标题所说,为什么我不能映射包含undefined项目的数组?为什么不能映射'undefined'数组

var foo = new Array(3); 
// [ , , ] 
var bar = [null, null, null]; 
// [null, null, null] 

foo.map(function(val){return 'test'}); 
// [ , , ] 
bar.map(function(val){return 'test'}); 
// ['test', 'test', 'test'] 

也许是愚蠢的问题,但我真的想知道原因。

谢谢。

+3

“因为规格说明是这样的” – Quentin

+1

*“它没有被要求丢失数组的元素(也就是说,从未设置的索引,它们已被删除或从未分配过值)。”* - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map – deceze

回答

1

MDN

地图调用提供回调函数一次用于在阵列中的每个元件中,为了,并构造从结果的新数组。 仅对已分配值的数组的索引(包括未定义)调用回调。它不会被调用缺少数组的元素(也就是说,从未设置过的索引,这些索引已被删除或从未分配过值)

相关问题