为什么当我在chrome控制台中写{} .key = 0时出现错误:
> {}.key = 0
> Uncaught SyntaxError: Unexpected token .
但是当我将上述表达式封装在括号(()中)时,我没有得到任何错误:
> ({}.key = 0)
> 0
到底发生了什么?我会想到我在第一个场景中遇到的同样错误仍然适用于第二个场景?
控制台输出图像:
解决方法:
{}在JavaScript语法中重载.它们用于(语句)块和对象文字.规则是:如果{出现在语句的开头,则将其解析为块;否则它是一个对象字面值.
在{} .key中,{出现在声明的开头.它解析为
{
// this is an empty block
}
.key // syntax error here
在{(例如()之前添加任何标记使其作为对象文字进行解析.例如,42,{}.key = 0也可以.