You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中({ a } = b)语法的含义及括号的作用是什么?

JavaScript 中 ({ a } = b) 语法的括号作用详解

为什么单独写 { a } = b 是语法错误

JavaScript 解析器解析代码时,行首的 { 会默认被识别为 块语句 的起始标记,而不是对象解构的语法标识。此时 { a } = b 会被拆分解析为:一个包含单个表达式 a 的块语句,后面跟着非法的赋值运算符 = b,自然会抛出语法错误。

这里括号的实际作用

你提到的分组运算符规则在这里完全适用:包裹在 () 内的内容会被强制解析为 表达式,而非语句。
加了括号后,解析器不会再把 { 识别为块开头,而是会正确识别为对象解构赋值的语法,整个 { a } = b 作为合法的解构赋值表达式执行,完成从对象b中提取a属性赋值给变量a的操作。

你提供的代码正常运行的原因

let b = { a: 123123123 };
try {
  ({ a } = b); 
} catch (error) {}
console.log({'a':a})
  • 首先括号规避了解构赋值的语法错误,解构操作可以正常执行
  • 非严格模式下,赋值操作中如果使用了未声明的变量a,会自动在全局作用域创建该变量,因此即使赋值操作在try块(块级作用域)内完成,外部的console.log也可以正常访问到全局变量a的值,最终输出{a: 123123123}。

补充说明:如果是在严格模式下(代码开头加'use strict'),给未声明的变量赋值会直接抛出引用错误,这段代码就无法正常运行了。

内容的提问来源于stack exchange,提问作者radiorz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:54:01