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

标签 javascript syntax

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

> {}.key = 0
> Uncaught SyntaxError: Unexpected token .

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

> ({}.key = 0)
> 0

这里到底发生了什么?我本以为我在第一个场景中遇到的错误仍然适用于第二个场景?

控制台输出图像:

enter image description here

最佳答案

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

{}.key 中,{ 出现在语句的开头。它解析为

{
    // this is an empty block
}
.key  // syntax error here

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

关于javascript - 为什么添加括号可以防止错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56716214/

相关文章:

javascript - 单击带有交互式 map /区域的图像

javascript - 从 javascript 对象中查找范围

bash - 为什么 shell 会忽略通过变量传递给它的参数中的引号字符?

ruby-on-rails - RoR教程第6章不断获取语法错误,出现意外的tIDENTIFIER,期望出现keyword_end(SyntaxError

Vim 语法递归匹配第一个和第二个元素

ruby-on-rails-3 - 未找到 Rails 测试 - 未定义的局部变量或方法 "response"

syntax - 如何在 Kotlin 中声明和初始化 MutableSet?

javascript - 类型 'string | null' 不可分配给类型 'string' 。类型 'null' 不可分配给类型 'string'

php - 根据单选按钮选择更改标签文本

javascript - 如何使这个同步递归函数异步