为什么当我在 chrome 控制台中写入 {}.key = 0
时出现错误:
> {}.key = 0
> Uncaught SyntaxError: Unexpected token .
但是当我将上面的表达式封装在括号 (( )
) 中时,我没有得到任何错误:
> ({}.key = 0)
> 0
这里到底发生了什么?我本以为我在第一个场景中遇到的错误仍然适用于第二个场景?
控制台输出图像:
最佳答案
{ }
在 JavaScript 语法中重载。它们用于(语句的) block 和对象文字。规则是:如果 {
出现在一个语句的开头,它被解析为一个 block ;否则它是一个对象字面量。
在 {}.key
中,{
出现在语句的开头。它解析为
{
// this is an empty block
}
.key // syntax error here
在 {
之前添加任何标记(例如 (
) 使其解析为对象文字。例如,42, {}.key = 0
也可以。
关于javascript - 为什么添加括号可以防止错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56716214/