为什么[,]是javascript中的有效数组文字?

时间:2014-04-19 21:08:00

标签: javascript grammar

出于某种原因,[,]是javascript中的有效数组文字。它是一个1元素的数组。 [,,]也适用,等等。我正在查看语法,看看为什么这会解析,但据我所知,一个空表达不应该被允许在那里。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我似乎在查看较旧的语言规范。 ECMAScript Language Specification, 5.1 Edition (HTML version)

将ArrayLiteral定义为:

ArrayLiteral :
    [ Elision opt ]
    [ ElementList ]
    [ ElementList , Elisionopt ]

Elision :
    ,
    Elision ,

Elision规则似乎定义了这种情况

在某种意义上,对于数组元素“占位符”,它是allows

在处理主要逗号时遇到了这个问题:

var x = [
  , something
  , somethingElse
  , 2
] 

我想知道为什么我为第一个元素获得undefined

感谢PointedEars和Derek朕会功夫

答案 1 :(得分:0)

哇,这是一个非常好的问题。 我以前从未注意过它。

我做了一个小提琴,进一步利用'这种现象: http://jsfiddle.net/xJnrK/

我认为它与javascript处理未定义变量的方式有关。 Javascript使用' null'或者' undefined'对于空变量。我猜这只是为了防止代码崩溃,而不像Java,你必须给你调用一个值的所有变量。

它变得更加疯狂,未定义不是保留字。您可以使用以下方法覆盖它(在本地范围内):

function replicateMozilla()
{
    var undefined = '2';

    console.log(undefined);
}

replicateMozilla();

有关undefined的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined