In Chrome
版本^72
如果我运行以下命令JavaScript
没有错误。
{ prop: p } = { prop: 'prop' }
>> { prop: 'prop' }
因此,这行代码意外地被解释为表达式语句。
但是,如果我在末尾运行相同的代码并带有分号,它将按预期运行。
{ prop: p } = { prop: 'prop' };
>> Uncaught SyntaxError: Unexpected token =
自最初以来,这是预期的{
告诉JavaScript
引擎认为它是一个代码块,除非我们用括号消除歧义。
为什么使用分号时会出现这种情况,而没有分号时却不会出现这种情况?
为什么使用分号时会出现这种情况,而没有分号时却不会出现这种情况?
Chrome 使用一个非常简单的测试来查看一行是否是对象文字:该行是否以{
并以}
?如果是,则该行被评估为表达.
{ prop: p } = { prop: 'prop' }
通过了那个测试,但是{ prop: p } = { prop: 'prop' };
才不是。
See 对象文字比较的奇怪行为 https://stackoverflow.com/q/50989247/218196获取更多信息(不同的输入,相同的原因)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)