我和几个同事发现了一些奇怪的JavaScript语法。我们不太能解释下面的行为(我正在使用Chrome控制台):
> {}[1]
收益率
[1]
基本上,可以在数组之前包含任何对象(不仅仅是空对象),语法是有效的,并且结果始终只是数组。这个行为有没有解释?是否存在任何不符合这种行为的情况?
此外,这个问题有点难以搜索,因为它包含一些不适合搜索引擎的字符。如果这是一个重复的问题,请告诉我。
我和几个同事发现了一些奇怪的JavaScript语法。我们不太能解释下面的行为(我正在使用Chrome控制台):
> {}[1]
收益率
[1]
{}
是一个空的代码块语句。它后面跟着一个数组字面量[1]
,这就是你的程序{}[1]
所评估的值。
它基本上等同于:
if (true) {
// empty block!
}
[1];
1
获取值,需要使用括号:
({})[1] // undefined
你可以使用 AST Explorer 来查看 JavaScript 解析器对你的代码的视图。{}
,它将将其评估为对象文字表达式。 - MinusFour{ }
:块,({ })
:对象字面量。 - joews
{ a: 'b' }[1]
yields[1]
- Jamie Counsella
是标记,'b'
是字符串字面表达式语句)。AST explorer。 - joews