解构并分配给新变量,同时不起作用

Destructure and assign to new variable at the same time not working

本文关键字:变量 不起作用 分配 新变量      更新时间:2023-09-26

我正在尝试解构对象并同时将其分配给新变量:

let {x} = a = {x: 'cool'};
console.log(a, x);

其中输出:

//Object { x: "cool" } cool - in Firefox
//ReferenceError: a is not defined - in Chrome, babel-node

为什么会有差异,正确的行为是什么?

更新:

这可能是更通用的用例。虽然这适用于所有环境:

var a = b = {x: 'cool'};

此语句在 Chrome/babel-node 中不起作用:

var {x} = a = {x: 'cool'}; //SyntaxError: Unexpected token {

使用 var 而不是 let 时也会出现不同的错误消息。

在代码中,未定义alet a = b = c没有定义b .你需要说

let a = {x: 1}, {x} = a;

火狐不支持let,所以我想知道你的示例是如何工作的。请参阅 https://kangax.github.io/compat-table/es6/。