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

ES6中如何对已定义的let变量进行解构赋值?

无需重新声明的解构赋值方案

嘿,这个问题我太懂了!当初从ES5转ES6的时候,我也超级沉迷对象解构,碰到这个场景时一开始也卡了一下——不过放心,完全有办法用let实现对已声明变量的解构更新。

你之前的写法{a, b} = await otherFunction(a, b)会报错,原因是JavaScript引擎会把以{开头的代码识别成代码块语句,而不是解构赋值表达式。解决方法很简单,只需要把整个解构赋值语句用一对圆括号()包裹起来就行:

function someFunction() { return Promise.resolve({ a: 0, b: 1 }); }
function otherFunction(a, b) { return Promise.resolve({ a: a + 1, b: b + 2 }); }

let {a, b} = await someFunction();
// 用括号包裹,告诉引擎这是一个表达式而非代码块
({a, b} = await otherFunction(a, b));

console.log(a, b); // 输出 1 3

这个括号的作用就是明确告诉JavaScript:“这不是代码块,是一个赋值表达式”,这样就能顺利完成对已用let声明的变量a和b的解构更新了,完全符合ES6的严格规范,不用退而求其次用var。

再举个更基础的同步场景例子帮你理解:

let x, y;
// 同样需要括号包裹
({x, y} = {x: 10, y: 20});
console.log(x, y); // 输出 10 20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:15:58