javascript - 为什么使用模板字符串时对象解构赋值会抛出错误?
问题描述
在 JavaScript 中,可以通过对象解构来分配变量,如下所示:
let a = {b: 2};
let {b} = a;
console.log(b); // 2
有时需要访问的属性不是有效的变量名,在这种情况下,可以传递一个替代标识符:
let a = {'words with spaces': 2};
let {'words with spaces': words_without_spaces} = a;
console.log(words_without_spaces); // 2
这适用于单引号字符串和双引号字符串。但是,尝试对模板字符串执行完全相同的操作时会引发错误:
let a = {'words with spaces': 2};
let {`words with spaces`: words_without_spaces} = a;
^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected template string
为什么在这里使用模板字符串会导致错误,而其他字符串不会?我知道模板字符串可以预先定义为一个变量,然后使用计算属性括号传递,但我只是好奇上述代码不起作用的原因是什么。
解决方案
语言语法允许对象初始值设定项中的属性名称或赋值的解构左侧是字符串文字而不是模板。这就是语法的定义方式。
推荐阅读
- primefaces - Primefaces orderlist自定义转换器在ajax post back上提交错误的字符串表示
- excel - 在 Excel 中合并 2 个命名范围 - 不使用 VBA
- vbscript - 如何使用 SAP GUI 脚本设置连接语言
- linux - 如何在awk中循环列?
- admin-on-rest - api 平台管理员上的“无法检索 API 文档”
- scala - 在 spark scala 中从一行创建多行
- websocket - 如何手动模拟 websocket 断开连接?(Firefox 或 Chrome 开发工具)
- node.js - 我的反应组件计时器不起作用
- security - Api Connect - 为每条路径定义不同的安全性
- jquery - Angular 5:在动态附加的 HTML 块上获取点击事件