为什么[1,2,4,5]是一个有效的JavaScript数组?

时间:2017-12-01 10:14:02

标签: javascript programming-languages grammar

我最近被一个错误所困扰,在这个错误中,一个JavaScript数组中有一个太多的逗号,这让我们想到了今天的问题:为什么

[1, 2,  , 4, 5]

有效的JavaScript数组而不是语法错误?是否在ECMAScript标准中明确规定应该允许使用emply元素?这似乎是一个容易错误的错误。

有关详细信息,请注意[1, 2, , 4, 5][2];undefined

2 个答案:

答案 0 :(得分:4)

这类数组称为稀疏数组。

http://2ality.com/2012/06/dense-arrays.html

答案 1 :(得分:2)

  

ECMAScript标准中是否明确规定应该允许使用emply元素?

是的,确实如此。见https://tc39.github.io/ecma262/#sec-array-initializer

  

可以在[ArrayLiteral]的元素列表的开头,中间或末尾省略数组元素。每当元素列表中的逗号前面没有AssignmentExpression(即开头的逗号或另一个逗号后面的逗号)时,缺少的数组元素会增加数组的长度并增加后续元素的索引。未定义Elided数组元素。如果在数组的末尾省略了元素,则该元素不会影响数组的长度。

在语法中,寻找非终结 Elision