如果我在浏览器控制台中创建以下常量:
const myArray = Array(2);
这将输出以下内容:
(2) [empty × 2]
当我以以下方式使用散布运算符时:
const myUndefinedArray = [...myArray]
然后控制台返回:
(2) [undefined, undefined]
在两种情况下都表示长度为两个。这些选项的用例分别是什么? “空”有什么具体含义吗?
答案 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
数组。