为什么我的阵列重组了?

时间:2016-09-27 18:08:01

标签: javascript object

我遇到了一点麻烦。我有一个全局变量(我希望我可以避免它,但我不知道如何)在某些时候腐败。我查看了我的代码,除了我想要的地方和方式之外,其他地方都没有被操纵。为了让事情变得更奇怪,当我在我的脚本中放置以下行(地方似乎无关紧要)console.log(_var); debugger;然后在控制台中自己输入_var后,第一个_var显示正确的结构,但是第二个没有...

这里的原始对象看起来像(并且应该看起来像):

[1: Array[2], 4: Array[2], 5: Array[2], 7: Array[2], 8: Array[2], 9: Array[2], 10: Array[2], 11: Array[2], 12: Array[2], 13: Array[2], 14: Array[2]]

以下是断点后对象的样子:

[undefined × 1, Array[2], undefined × 2, Array[2], Array[2], undefined × 1, Array[2], Array[2], Array[2], Array[2], Array[2], Array[2], Array[2], Array[2]]

我似乎无法弄清楚为什么会发生这种情况,但是当我在以后根据用户操作调用的函数中遍历此对象时,这给了我一些问题。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:5)

这里没问题。您只是看到两种不同的显示相同阵列的方式。 console.log标记元素及其索引并省略未分配的数组索引,而只需在控制台中键入_var即可将未分配的索引显示为undefined × howevermany

对于认为这看起来不像Javascript数组的人来说,在Chrome控制台中重现此行为很简单:

Example session