Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Array.from({length:5})和Array(5.fill)(未定义)之间有什么区别?_Javascript - Fatal编程技术网

Javascript Array.from({length:5})和Array(5.fill)(未定义)之间有什么区别?

Javascript Array.from({length:5})和Array(5.fill)(未定义)之间有什么区别?,javascript,Javascript,以下两者之间的区别是什么: Array.from({length: 5}) 及 我可以看到,这两种方法都在创建一个带有未定义值的数组 但是我不理解它们的区别。Array()。()中的返回未定义的值,因为它没有指定数组索引的特定值 Array(5.fill()的事实是显而易见的。因为它总是填充相同的值直到数组的长度(在您的情况下,它是未定义的)它们有不同的用例Array.from非常有用,例如,对于某些返回类似于数组的对象的DOM方法,但没有任何数组方法。主要是将类似于数组的东西转换为数组 c

以下两者之间的区别是什么:

Array.from({length: 5})

我可以看到,这两种方法都在创建一个带有
未定义值的数组

但是我不理解它们的区别。

Array()。
()中的
返回未定义的值,因为它没有指定数组索引的特定值


Array(5.fill()
的事实是显而易见的。因为它总是填充相同的值直到数组的长度(在您的情况下,它是未定义的)

它们有不同的用例
Array.from
非常有用,例如,对于某些返回类似于数组的对象的DOM方法,但没有任何数组方法。主要是将类似于数组的东西转换为
数组

const children=document.getElementById('container').children;
console.log(儿童);
const childrenArray=Array.from(childrenArray);
console.log(childrenArray)

第一区
第2区
第3区
第4区

没有区别。两个表达式的输出相同。
。from
创建一个新数组,该数组的大小取决于传入对象的
length
属性,该属性通常是一个类似数组的对象,但在您的示例中不必如此-这将保留默认的所有元素(
未定义的
)。Array(5)创建一个长度为5的新数组,然后将每个元素(在您的示例中)指定给
未定义的
。第二个版本可能较慢,因为
.fill
没有意义(
数组(5)
也会这样做)。最终结果是same@Tibrogargan填充并非毫无意义。它将它从一个有五个空插槽的数组更改为一个有五个非空插槽的数组,所有这些插槽都保存着
未定义的值
@Tibrogaran,当然它仍然是
“未定义的”
,访问数组中的空插槽的计算结果是
未定义的
;但是它会改变,例如数组(5)中的
1
false
变为数组(5)中的
1。fill(undefined)==true
,并且会改变是否在迭代中使用数组#map或数组#forEach等来访问插槽。这绝对不是毫无意义的。@Tibrogargan它与新的迭代方法(如forEach)不同,forEach不访问不存在的属性<代码>数组(5).forEach(x=>console.log(x))
不打印任何内容。
Array(5).fill(undefined)