为什么加括号可以防止错误?

Shn*_*ick 14 javascript syntax

为什么{}.key = 0在chrome控制台中书写时出现错误:

> {}.key = 0
> Uncaught SyntaxError: Unexpected token .
Run Code Online (Sandbox Code Playgroud)

但是,当我将上述表达式封装在括号(( ))中时,我没有得到任何错误:

> ({}.key = 0)
> 0
Run Code Online (Sandbox Code Playgroud)

这到底是怎么回事?我会以为在第一种情况下遇到的相同错误仍然适用于第二种情况?

控制台输出的图像

在此处输入图片说明

mel*_*ene 15

{ }在JavaScript语法中超载。它们用于(语句的)块和对象文字。规则是:如果a {出现在语句的开头,则将其解析为一个块;否则,它是一个对象文字。

{}.key{出现在声明的开头。它解析为

{
    // this is an empty block
}
.key  // syntax error here
Run Code Online (Sandbox Code Playgroud)

在之前添加任何标记{(例如()可使它解析为对象文字。例如,42, {}.key = 0也可以。