当Array元素中的逗号不会影响数组

时间:2017-08-02 16:09:56

标签: javascript arrays ecmascript-6 ecmascript-5

ECMAScript 2016

  

可以在元素列表的开头,中间或末尾省略数组元素。每当元素列表中的逗号前面没有AssignmentExpression(即开头的逗号或另一个逗号后面的逗号)时,缺少的数组元素会增加数组的长度并增加后续元素的索引。

var a = [b=1,,] console.log(a.length) //2 逗号前面有AssignmentExpression(b = 1),缺少的数组元素提供长度。我想知道为什么?
ECMAScript说没有贡献长度。我想知道逗号如何不贡献长度,除了在数组的末尾

1 个答案:

答案 0 :(得分:2)

逗号跟随计数元素,它不标记一个元素的开头。 逗号是数组中的最后一个东西是没有意义的,因为已经考虑了前面的元素。

你遗漏了解释的最后一句话,似乎回答了你的问题:

  

如果某个元素在数组的末尾被省略,则该元素不会影响数组的长度。

它还说数组的开头或中间的空元素会影响数组长度(因为它们跟随计算的元素,即使它们是空的)

如果你只有这个:[,]你的长度为1,这是因为在逗号之前的数组开头是空的未定义元素。

你的例子: var a = [b=1,,]只有2个元素而不是3个元素,因为第二个逗号后面没有任何内容。第一个逗号之后的空元素会有所贡献,因为它最后,后面是第二个逗号,表示那里有一个索引,其中没有任何内容。这就像写[b=1, undefined]。第二个逗号实际上是一个错字。