我最近被一个错误所困扰,在这个错误中,一个JavaScript数组中有一个太多的逗号,这让我们想到了今天的问题:为什么
[1, 2, , 4, 5]
有效的JavaScript数组而不是语法错误?是否在ECMAScript标准中明确规定应该允许使用emply元素?这似乎是一个容易错误的错误。
有关详细信息,请注意[1, 2, , 4, 5][2];
为undefined
。
答案 0 :(得分:4)
这类数组称为稀疏数组。
答案 1 :(得分:2)
ECMAScript标准中是否明确规定应该允许使用emply元素?
是的,确实如此。见https://tc39.github.io/ecma262/#sec-array-initializer
可以在[ArrayLiteral]的元素列表的开头,中间或末尾省略数组元素。每当元素列表中的逗号前面没有AssignmentExpression(即开头的逗号或另一个逗号后面的逗号)时,缺少的数组元素会增加数组的长度并增加后续元素的索引。未定义Elided数组元素。如果在数组的末尾省略了元素,则该元素不会影响数组的长度。
在语法中,寻找非终结 Elision 。