Javascript 新数组(7)和Array.apply(null,数组(7))之间的差异
任何人都可以向我解释Javascript 新数组(7)和Array.apply(null,数组(7))之间的差异,javascript,arrays,Javascript,Arrays,任何人都可以向我解释新数组(7)和数组之间的区别。应用(null,数组(7))?在这方面: Array.apply(null,数组(7)).map((e,i)=>{ 返回力矩(即“e”)。格式(“ddd”); }); // [“太阳”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”] 新数组(7).map((e,i)=>{ 返回力矩(即“e”)。格式(“dd”); }); // [空×7] 这两种方法是等效的,因为它是函数的一部分 看起来您可能需要以下内容: 数组 .from({l
新数组(7)
和数组之间的区别。应用(null,数组(7))
?在这方面:
Array.apply(null,数组(7)).map((e,i)=>{
返回力矩(即“e”)。格式(“ddd”);
}); // [“太阳”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”]
新数组(7).map((e,i)=>{
返回力矩(即“e”)。格式(“dd”);
}); // [空×7]
这两种方法是等效的,因为它是函数的一部分
看起来您可能需要以下内容:
数组
.from({length:7},({,i)=>矩(i,'e')。格式('ddd'))
;
调用对象上的原型方法。其中as doArray(7)
正在创建一个由七个元素组成的新数组,例如new Array(7)。apply
不是一个有效的调用,将产生以下错误:
未捕获类型错误:(中间值)。应用不是函数
执行Array.apply(null,Array(7))
是这里唯一有效的调用
编辑
语句Array.apply(null,Array(7))
将创建一个填充了undefined
元素的数组。因此,调用.map()
将迭代这些元素并生成预期结果
另一方面,只调用新数组(7)
将创建一个定义长度为7
的稀疏数组。这意味着长度将被定义为7
,但它没有将任何元素填充到数组中。所以现在还没有什么可以重复的
Array(7)
创建没有设置元素的稀疏数组。因此,作为一个对象,它看起来像:
{length: 7}
如果您要调用任何新的酷数组方法,它将不会迭代,因为数组中没有元素。但是,如果将其分散到数组构造函数中:
Array(...Array(3))
等于
Array(undefined, undefined, undefined)
这实际上会创建3(或7)个未定义的阵列插槽:
{
0:undefined,
1:undefined,
2:undefined,
length:3
}
现在,您可以使用map
等对其进行迭代。同样的情况也可以使用:
Array(7).fill().map(func)
及
当代码运行时,我得到一个错误<代码>“TypeError:(新数组(…)。应用不是一个函数”,
@user184994,编辑可能与上面注释中的检查链接重复。最重要的答案是为什么会发生这种情况不,不是我想知道为什么数组。apply()工作,而new Array()不工作,为什么我们应该传递参数(null和Array7)?原型方法它就像静态方法一样?数组
是一个函数!
Array.from({length:7}, func);