为什么在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?
在块内,由label和number 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