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