Javascript 为什么在使用模板字符串时,对象分解分配会引发错误?

Javascript 为什么在使用模板字符串时,对象分解分配会引发错误?,javascript,syntax,template-strings,Javascript,Syntax,Template Strings,在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 这适

在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

为什么在这里使用模板字符串会导致错误,而其他字符串不会?我知道模板字符串可以预先定义为变量,然后使用计算属性括号传递,但我只是好奇上面代码不起作用的原因是什么。

语言语法允许对象初始值设定项中的属性名或赋值左侧的描述为字符串文字,而不是模板。这正是语法的定义方式。

语言语法允许对象初始值设定项中的属性名或赋值的左侧的描述结构中的属性名为字符串文字,而不是模板。这就是语法的定义方式。

原因很简单,因为属性键必须由
分隔。
是字符串文字,而不是模板表达式。我想这至少可以部分回答:谢谢,那篇文章回答了我的问题。原因很简单,属性键必须由
分隔。”
-字符串文字不是模板表达式。我想这至少可以部分回答:谢谢,那篇文章回答了我的问题。