Javascript 为什么Chrome devtools在传播我的阵列后会以不同的方式显示它?
要创建一个长度为Javascript 为什么Chrome devtools在传播我的阵列后会以不同的方式显示它?,javascript,arrays,google-chrome,ecmascript-6,google-chrome-devtools,Javascript,Arrays,Google Chrome,Ecmascript 6,Google Chrome Devtools,要创建一个长度为x元素的数组,其中所有元素都没有定义,我使用array(x)函数。如果我将其输入Chrome devtools控制台,它将以如下简写符号显示: 如果然后使用扩展运算符(…)浅层复制此数组,则表示将更改为完整数组打印输出: 如果手动输入数组,也会使用完整的打印输出: 为什么会这样?使用Chrome的未定义×x速记的条件是什么 编辑 在创建undefineds数组之前使用new关键字不会对Chrome的表示产生任何影响: 需要注意的是,没有关于控制台行为的规范或标准,可能的原因
x
元素的数组,其中所有元素都没有定义,我使用array(x)
函数。如果我将其输入Chrome devtools控制台,它将以如下简写符号显示:
如果然后使用扩展运算符(…
)浅层复制此数组,则表示将更改为完整数组打印输出:
如果手动输入数组,也会使用完整的打印输出:
为什么会这样?使用Chrome的未定义×x
速记的条件是什么
编辑
在创建undefined
s数组之前使用new
关键字不会对Chrome的表示产生任何影响:
需要注意的是,没有关于控制台行为的规范或标准,可能的原因是新构造数组的元素与显式分配值(甚至
未定义的)给数组元素的元素之间存在重要差异。数组基本上跟踪特定单元格是否曾经是分配的目标(扩展语法有效地做到了这一点)。在一些重要情况下,这些单元的处理方式不同,主要涉及array.prototype
上的各种数组迭代函数。这些(大多数)不会在迭代中包含从未分配的单元
因此,控制台向您显示,使用array
构造函数和数字参数分配的数组长度为6,但在JavaScript数组意义上它是“空”的,因为没有任何单元格是任何类型分配的目标
同样,不要依赖于控制台的特定输出样式。Firefox和IE可能会显示不同的内容,任何浏览器都可能会一时兴起,在不同的版本之间更改这些输出的外观。但需要注意的是,没有关于控制台行为的规范或标准,可能的原因是,新构造数组的元素与显式为数组元素指定值(甚至未定义的)的元素之间存在重要差异。数组基本上跟踪特定单元格是否曾经是分配的目标(扩展语法有效地做到了这一点)。在一些重要情况下,这些单元的处理方式不同,主要涉及array.prototype
上的各种数组迭代函数。这些(大多数)不会在迭代中包含从未分配的单元
因此,控制台向您显示,使用array
构造函数和数字参数分配的数组长度为6,但在JavaScript数组意义上它是“空”的,因为没有任何单元格是任何类型分配的目标
同样,不要依赖于控制台的特定输出样式。Firefox和IE可能会显示不同的内容,任何浏览器都可能会一时兴起,在不同的版本中改变这些输出的外观。这是新的数组(6)我忘记了我必须使用new
,但即使我这样做,我仍然会得到相同的输出。我刚刚发现它们是相等的,因为函数数组(){if(this==window)return new Array();},所以我现在很困惑为什么有人对我的错误陈述投了赞成票…:|这是一个新数组(6)我忘了我必须使用new
,但即使我这样做了,我仍然得到相同的输出。我刚刚发现它们是相等的,因为函数数组(){if(this==window)返回新数组();},所以我现在很困惑为什么有人对我的错误语句进行了投票…:|另请参见“稀疏”与“密集”数组?这很有道理-谢谢!我的问题被标记为的副本也确实有助于澄清问题。另请参见“稀疏”与“密集”数组?这很有意义-谢谢!我的问题被标记为一个真正有助于澄清问题的副本。