为什么Chrome devtools在传播之后会以不同的方式显示我的阵列?

时间:2017-05-06 14:00:50

标签: javascript arrays google-chrome ecmascript-6 google-chrome-devtools

要创建一个x个元素的数组,其中所有元素都是未定义的,我使用Array(x)函数。如果我将其输入Chrome devtools控制台,它将以简写符号显示:

undefined x 6

如果我然后使用扩展运算符(...)来浅层复制此数组,则表示形式将更改为完整数组打印输出:

undefined, undefined, undefined, undefined, undefined, undefined

如果我手动输入数组,还会使用完整的打印输出:

undefined, undefined, undefined, undefined, undefined, undefined

这是为什么? Chrome的undefined × x简写使用的条件是什么?

修改

在创建new数组之前使用undefined关键字对Chrome的表示没有任何影响:

enter image description here

1 个答案:

答案 0 :(得分:1)

有一点需要注意,控制台的行为方式没有规范或标准,可能的原因是新构造的数组的元素与具有值(甚至undefined)的元素之间存在重要差异。分配给数组元素。该阵列基本上跟踪特定单元是否曾经是分配的目标(扩展语法有效地做了)。在某些重要情况下,这些单元格的处理方式不同,主要涉及Array.prototype上的各种数组迭代函数。那些(其中大多数)将不包括迭代中从未分配的单元格。

因此,控制台向您显示分配了Array构造函数和数字参数的数组的长度为6,但在JavaScript数组意义上它是“空的”,因为没有一个单元格是目标任何类型的任务。

同样,不要依赖控制台的特定输出样式。 Firefox和IE可能会显示不同的内容,任何浏览器都可能会随意改变从发布到发布的输出外观。