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 do
Array(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);