首页 > 解决方案 > ES6中没有变量声明的对象解构赋值

问题描述

是否可以在 ES6 中使用解构赋值表达式而不需要声明变量?

换句话说,为什么下面的代码在语法上不正确?

(我知道有很多方法可以重写这段代码。)

'use strict';

let var1 = 'defaultVal1', var2 = 'defaultVal2';
const obj = { group: { var1: 'newVal1', var2: 'newVal2' } }
if (obj) {
  { group: { var1, var2 } } = obj; // No 'let'/'const' keyword, i.e. no redeclaration, but invalid expression
}
console.log(var1);
console.log(var2);

标签: javascriptecmascript-6ecmascript-next

解决方案


括号被解释为块语句,但你需要一个表达式。这可以通过用括号将其包装为没有声明的赋值来存档。

'use strict';

let var1 = 'defaultVal1', var2 = 'defaultVal2';
const obj = { group: { var1: 'newVal1', var2: 'newVal2' } }
if (obj) {
  ({ group: { var1, var2 } } = obj); // No 'let'/'const' keyword, i.e. no redeclaration, but invalid expression
}
console.log(var1);
console.log(var2);


推荐阅读