要创建一个x
个元素的数组,其中所有元素都是未定义的,我使用Array(x)
函数。如果我将其输入Chrome devtools控制台,它将以简写符号显示:
如果我然后使用扩展运算符(...
)来浅层复制此数组,则表示形式将更改为完整数组打印输出:
如果我手动输入数组,还会使用完整的打印输出:
这是为什么? Chrome的undefined × x
简写使用的条件是什么?
在创建new
数组之前使用undefined
关键字对Chrome的表示没有任何影响:
答案 0 :(得分:1)
有一点需要注意,控制台的行为方式没有规范或标准,可能的原因是新构造的数组的元素与具有值(甚至undefined
)的元素之间存在重要差异。分配给数组元素。该阵列基本上跟踪特定单元是否曾经是分配的目标(扩展语法有效地做了)。在某些重要情况下,这些单元格的处理方式不同,主要涉及Array.prototype
上的各种数组迭代函数。那些(其中大多数)将不包括迭代中从未分配的单元格。
因此,控制台向您显示分配了Array
构造函数和数字参数的数组的长度为6,但在JavaScript数组意义上它是“空的”,因为没有一个单元格是目标任何类型的任务。
同样,不要依赖控制台的特定输出样式。 Firefox和IE可能会显示不同的内容,任何浏览器都可能会随意改变从发布到发布的输出外观。