编程语言
首页 > 编程语言> > 为什么在JavaScript的语句中忽略对象文字?

为什么在JavaScript的语句中忽略对象文字?

作者:互联网

我在搞乱JavaScript控制台,发现

>> {}[1]
[1]

计算为数组.经过一番混乱之后,我发现

>> b = {}[1]
undefined

给了我undefined的预期结果.起初我以为花括号被解释为一个块,但尝试

>> {a:1}[1]
[1]

仍然给了我[1]数组.我希望如果将其解释为一个块,则会导致语法错误.为什么会这样呢?

更多信息:我从Don’t understand why you should not use an object literal at the beginning of a statement中发现,它很可能是一个块,但这无法回答这不是语法错误,除非它正在进行前瞻性确定它是对象文字还是块,但它不是对象文字因为它仍在评估[1].

编辑:我在Chrome和Firefox的调试控制台和Node.js的命令行界面中尝试了此操作.

解决方法:

I would expect that if it was interpreted as a block, it would result in a syntax error. Why is this the case?

在块内,由labelnumber literal组成的表达式有效.

but this does not answer how this is not a syntax error unless it is doing a lookahead to determine if it’s an object literal or a block

它不需要向前看.由于{的左侧(即什么都没有),因此这是一个块.

标签:javascript,javascript-objects
来源: https://codeday.me/bug/20191010/1885496.html