我和一些同事遇到了一些更奇怪的JavaScript语法.我们无法解释以下行为(我使用的是Chrome控制台):
> {}[1]
Run Code Online (Sandbox Code Playgroud)
产量
[1]
Run Code Online (Sandbox Code Playgroud)
从本质上讲,在数组之前包含任何对象(不仅仅是空)是有效的语法,结果始终只是数组.这有什么解释吗?这种情况不是这样的吗?
此外,这个问题有点难以搜索,因为它包含的搜索引擎效果不佳.如果这是一个重复的问题,请告诉我.
{}是一个空代码块语句.接下来是一个Array文字[1],它是程序{}[1]评估的值.
它几乎相当于:
if (true) {
// empty block!
}
[1];
Run Code Online (Sandbox Code Playgroud)
如果要1在空对象文字中使用键获取值,请使用括号:
({})[1] // undefined
您可以使用AST Explorer查看JavaScript解析器的代码视图.