我想了解这背后的原因:
var a = new Array(3);
var b = a.map(function () {
return 'b';
});
Run Code Online (Sandbox Code Playgroud)
结果是
A: [ , , ]
b: [ , , ]
当我期望b导致['b', 'b', 'b'].
在进一步的调查中,我发现如果我这样做a.push('a'),我会有[, , , 'a'].
并且在地图功能之后,b将成为[, , , 'b'].
这里发生了什么?为什么这些分配的单元格的行为与初始化不同?我最初期望这样做,如果它是一个数组文字,[undefined, undefined, undefined].map(fn)
Array.map()不会为未定义其值的索引调用回调.
来自MDN文档:
map按顺序为数组中的每个元素调用一次提供的回调函数,并从结果中构造一个新数组.仅为已分配值的数组的索引调用回调; 对于未定义的索引,已删除的索引或从未分配过值的索引,不会调用它.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |