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

Why is [,] a valid array literal in javascript?

本文关键字:一个 有效 文字 数组 javascript 为什么      更新时间:2023-09-26
由于某些原因,[,]在javascript中是一个有效的数组文字。它是一个单元素数组。[,,]也可以,等等。我正在查看语法,看看为什么会解析,但据我所知,不应该允许有空表达式。

有什么想法吗?

我似乎在看一个旧的语言规范。ECMAScript语言规范,5.1版(HTML版本(

将ArrayLiteral定义为:

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

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

在某种意义上,它允许数组元素"占位符"。

我在处理前导逗号时遇到了这个问题:

var x = [
  , something
  , somethingElse
  , 2
] 

我想知道为什么我得到了第一个元素的undefined

谢谢PointedEars和Derek朕會功夫

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

我制作了一把小提琴,进一步"利用"了这种现象:http://jsfiddle.net/xJnrK/

我认为这与javascript处理未定义变量的方式有关。Javascript对空变量使用"null"或"undefined"。我想这只是为了防止代码崩溃,不像Java那样,在Java中,必须给所有调用的变量一个值。

它变得更加疯狂,未定义不是一个保留词。您实际上可以使用覆盖它(在本地范围内(

function replicateMozilla()
{
    var undefined = '2';
    console.log(undefined);
}
replicateMozilla();

有关未定义的详细信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined