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

如何使用对象解构赋值重新初始化JavaScript变量值

对象解构赋值重新赋值的语法问题解决

你遇到的错误是因为JavaScript引擎会把开头的{}解析成代码块,而非解构赋值的表达式,所以直接写{fname, address, telnumber} = newdata;会触发语法错误。以下是两种可行的解决方法:

方法一:用括号包裹赋值语句

将整个解构赋值语句放在圆括号()中,明确告诉引擎这是一个表达式,而非代码块:

let reqs = {
  body: {
    fname: "foo",
    address: "123 Galaxy St.",
    telnumber: "123-123-6969",
  },
};
let { fname, address, telnumber } = reqs.body;

let newdata = { fname: "new fname", address: "new Street St.", telnumber: "90-90-90" };
// 用括号包裹解构赋值语句
({fname, address, telnumber} = newdata);

console.log("fname ", fname); // fname  new fname
console.log("address ", address); // address  new Street St.
console.log("telnumber ", telnumber) // telnumber  90-90-90

方法二:使用var重复声明(不推荐)

如果变量是用var声明的,可以通过再次解构声明覆盖原有变量,但let/const不允许重复声明,所以这种方法局限性较大,仅作参考:

var reqs = {
  body: {
    fname: "foo",
    address: "123 Galaxy St.",
    telnumber: "123-123-6969",
  },
};
var { fname, address, telnumber } = reqs.body;

var newdata = { fname: "new fname", address: "new Street St.", telnumber: "90-90-90" };
var { fname, address, telnumber } = newdata;

console.log("fname ", fname);

推荐使用第一种方法,既符合let/const的变量声明规范,也更直观清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:15:53