Javascript 为什么可以';t图';未定义';排列
正如标题所说,为什么我不能映射一个包含Javascript 为什么可以';t图';未定义';排列,javascript,Javascript,正如标题所说,为什么我不能映射一个包含未定义项的数组 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'] 也许这是个愚蠢的问题,但我真的想知
未定义项的数组
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']
也许这是个愚蠢的问题,但我真的想知道原因
谢谢。来自:
map为数组中的每个元素按顺序调用一次提供的回调函数,并根据结果构造一个新数组回调仅对具有赋值(包括未定义)的数组索引调用。对于数组中缺少的元素(即从未设置、已删除或从未赋值的索引),不会调用它。请参见:
回调
仅对具有赋值的数组索引调用,包括未定义的
。对于数组中缺少的元素(即从未设置、已删除或从未赋值的索引),不会调用它
它不起作用,因为元素没有被赋值
如果你使用
foo[0] = undefined;
foo[1] = undefined;
foo[2] = undefined;
然后它就可以工作了。“因为规范这么说”“它不会为数组中缺少的元素(即从未设置、已删除或从未赋值的索引)调用。”-