我们都知道数组文字和数组构造函数之间的区别是微妙的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'];
我希望x
和y
都是数组实例,并从.map
方法返回相同的结果。看似奇怪的是,数组x
生成的数组不可映射,而文字y
是可映射的。
为什么x
和y
会从.map
方法返回不同的结果?
感谢您的帮助。
答案 0 :(得分:3)
MDN:
map 按顺序为数组中的每个元素调用一次提供的回调函数,并从结果中构造一个新数组。仅对已分配值的数组的索引调用回调,包括未定义的。它不会被调用缺少数组的元素(即,从未设置过的索引,已删除的索引或从未赋值的索引)。