'empty x 2'数组和[undefined,undefined]有什么区别?

时间:2019-02-04 14:00:16

标签: javascript arrays

如果我在浏览器控制台中创建以下常量:

const myArray = Array(2);

这将输出以下内容:

(2) [empty × 2]

当我以以下方式使用散布运算符时:

const myUndefinedArray = [...myArray]

然后控制台返回:

(2) [undefined, undefined]

在两种情况下都表示长度为两个。这些选项的用例分别是什么? “空”有什么具体含义吗?

4 个答案:

答案 0 :(得分:0)

主要区别在于forEach和map属性

Array(2).map(()=>"value")不会做任何事情

[undefined,undefined].map(()=>"value")将映射

答案 1 :(得分:0)

空值不可迭代:

var arr = new Array(5)

arr.forEach(()=> console.log('hello'))

var arr2 = [...arr]

arr2.forEach(()=> console.log('world'))

答案 2 :(得分:0)

数组中的空值表示从未为索引分配值。这与Javascript如何处理数组有关。您可以尝试以下方法:

var v = new Array();   
v[0]=undefined;
v.length = 2

console.log(v);

请参阅,数组索引0具有名称为“ 0”的“属性”,但未分配值(即未定义)。但是,该数组此时没有名称为“ 1”的属性。 Chrome将此记录为“空”值。

答案 3 :(得分:0)

const myArray = Array(2);
console.log(myArray)

您要在此处创建一个长度为2的空值,这就是为什么要获取2x空值数组的输出的原因,因为您没有在创建的数组中放入任何值。

const myArray = Array(2);
const myUndefinedArray = [...myArray]
console.log(myUndefinedArray)

您之所以来到undefined,是因为您试图使用不存在的值创建一个myUndefinedArray数组。