javascript - 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);
解决方案
括号被解释为块语句,但你需要一个表达式。这可以通过用括号将其包装为没有声明的赋值来存档。
'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);
推荐阅读
- php - Laravel 7 自定义助手在登录时呈现我的应用程序抛出异常(页面已过期)
- r - 使用 ggplot2 绘制变量的平均值
- typescript - 打字稿:使用字符串的子集作为[key:subset]
- c++ - Google 测试 - 未定义对 testing::internal::AssertHelper::AssertHelper 的引用
- reactjs - 使用 Object.entries 检索值时,如何在 typescript react 应用程序中正确键入从 JSON 对象(api 调用)检索的空值?
- r - 如何在 Windows 10 中安装“不可用”的 R 包(MCMCpack)?
- javascript - 尝试在 React JS 中破坏数组时显示错误
- regex - 如何使用 Powershell 打印包含匹配字符串的整个函数?
- c - 如何在C中将用户输入句子的每个字符分别存储在数组中
- c++ - 用 {" ", " "} 初始化对象数组