如何使用对象解构赋值重新初始化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
相关产品推荐
相关产品推荐

