考虑:
var a = Array(3);
var b = [undefined,undefined,undefined];
Run Code Online (Sandbox Code Playgroud)
是什么原因a.map并b.map产生不同的结果?
a.map(function(){ return 0; }); //produces -> [undefined,undefined,undefined]
b.map(function(){ return 0; }); //produces -> [0,0,0]
Run Code Online (Sandbox Code Playgroud) 我试图使用map生成一些随机数据.令我惊讶的是,我无法弄清楚为什么这段代码不起作用.
请考虑以下代码段,它按预期工作:
const empty = [undefined, undefined];
const rand = empty.map(item => Math.random());
Output: [0.4774752874308936, 0.8482276976659398]
Run Code Online (Sandbox Code Playgroud)
我试图简化一下并执行以下操作
const rand = Array(2).map(item => Math.random())
Output: [undefined × 2]
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样.显然,由Array(n)和[]生成的两个数组都是典型的数组,并且具有所有原型方法.
Array(2) instanceof Array
true
[undefined, undefined] instanceof Array
true
Array.isArray(Array(2))
true
Array.isArray([undefined, undefined])
true
Run Code Online (Sandbox Code Playgroud)
有人能指出我在哪里错了吗?