使用解构赋值交换对象属性时出现 TypeError

TypeError when swapping object properties with destructuring assignment

我正在尝试使用 [] = [] 方法交换 JavaScript 中的两个对象值,但我的以下代码失败并显示错误 "message": "Uncaught TypeError: Cannot set property '9' of undefined",

let dataObj={"reg_price":2, "reg_price_alt":5, "ex":9}
console.log("before: ", dataObj)
[dataObj.reg_price, dataObj.ex] = [4, 5];
console.log("after: ", dataObj)

我是否缺少某些语法?我不明白为什么这个简单的代码不起作用。

语法没问题。添加一个分号以防止自动分号插入认为你想做 console.log(...)[...] 而不是数组解构:

let dataObj = {"reg_price":2, "reg_price_alt":5, "ex":9}
console.log("before: ", dataObj); // <-- semicolon
[dataObj.reg_price, dataObj.ex] = [4, 5]
console.log("after: ", dataObj)

我会更进一步,在每一行之后添加分号。否则买者自负。交换值示例:

const o = {a: 0, b: 1};
console.log(o);
[o.a, o.b] = [o.b, o.a];
console.log(o);