数组文字和数组构造函数方法返回不同的结果

时间:2016-03-08 23:57:23

标签: javascript arrays

我们都知道数组文字和数组构造函数之间的区别是微妙的can be important。在引用的链接中似乎没有注意到另一个区别。请采取以下措施:

var x = new Array(5); // [undefined x 5];
var newArr = x.map(function () {return 'newValue'});
console.log(newArr); // [undefined x 5];

VS

var y = [undefined, undefined, undefined, undefined, undefined];
var newArr = y.map(function () {return 'newValue'});
console.log(newArr); // ['newValue', 'newValue', 'newValue', 'newValue', 'newValue'];

我希望xy都是数组实例,并从.map方法返回相同的结果。看似奇怪的是,数组x生成的数组不可映射,而文字y是可映射的。

为什么xy会从.map方法返回不同的结果?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

MDN

  

map 按顺序为数组中的每个元素调用一次提供的回调函数,并从结果中构造一个新数组。仅对已分配值的数组的索引调用回调,包括未定义的。它不会被调用缺少数组的元素(即,从未设置过的索引,已删除的索引或从未赋值的索引)。