是否可以在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);

最佳答案

方括号解释为block statement,但是您需要一个表达式。可以通过用括号将其包装为assignment without declaration来对其进行存档。



'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);

关于javascript - ES6中没有变量声明的对象解构分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58949177/

10-12 04:11
查看更多