解构并同时分配给新变量不起作用
Destructure and assign to new variable at the same time not working
我正在尝试解构对象并同时将其分配给新变量:
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
时也会出现不同的错误消息。
在您的代码中,a
未定义。 let a = b = c
没有定义 b
。你需要说
let a = {x: 1}, {x} = a;
Firefox 不支持 let
,所以我想知道您的示例在那里是如何工作的。参见 https://kangax.github.io/compat-table/es6/。
我正在尝试解构对象并同时将其分配给新变量:
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
时也会出现不同的错误消息。
在您的代码中,a
未定义。 let a = b = c
没有定义 b
。你需要说
let a = {x: 1}, {x} = a;
Firefox 不支持 let
,所以我想知道您的示例在那里是如何工作的。参见 https://kangax.github.io/compat-table/es6/。