Javascript 如何使用模板文本作为对象文本内的键?

Javascript 如何使用模板文本作为对象文本内的键?,javascript,object-literal,template-literals,Javascript,Object Literal,Template Literals,如何使用模板文字作为对象文字内部的键? 以下代码: { `${id}_name`: "John Doe", `${id}_age`: 27, } 生成语法错误: Uncaught SyntaxError: Unexpected token : 是否有我遗漏的东西,或者这不受支持?如果没有,是否计划对此功能提供支持?当然,我会立即提出解决方案: { [`${id}_name`]: "John Doe", [`${id}_age`]: 27, } 将模板文字用方

如何使用模板文字作为对象文字内部的键?

以下代码:

{
    `${id}_name`: "John Doe",
    `${id}_age`: 27,
}
生成语法错误:

Uncaught SyntaxError: Unexpected token :

是否有我遗漏的东西,或者这不受支持?如果没有,是否计划对此功能提供支持?

当然,我会立即提出解决方案:

{
    [`${id}_name`]: "John Doe",
    [`${id}_age`]: 27,
}
将模板文字用方括号括起来。这将计算方括号中的表达式,并将其用作键


如果没有方括号,只能使用标识符(例如
mykey\u name
)、单引号或双引号字符串(例如
“mykey name”
)和数字(例如
42
)。

您的答案是正确的,但我将尝试回答原因

如果我们提到的是

属性使用键值标识。属性键值是ECMAScript字符串值或符号值。所有字符串和符号值(包括空字符串)都作为属性键有效。属性名称是作为字符串值的属性键

在这种情况下,a被定义为

字符串文字是用单引号或双引号括起来的零个或多个Unicode代码点。Unicode代码点也可以由转义序列表示。除结束引号代码点U+005C(反索利多金币)、U+000D(回车符)和U+000A(换行符)外,所有代码点都可以以字符串文字形式出现

这意味着字符串必须是用单引号或双引号括起来的unicode字符。对象键必须是ECMAScript字符串或符号,我假设它们是索引

模板文字是ECMAScript字符串,但ECMAScript字符串不是模板文字


顺便说一句,我不是ECMAScript专家,但这正是我能找到的。

您可能需要
[]
?像这样的
{[`id}\u name`]:“John Doe”}
这能回答你的问题吗@进化Xbox谢谢,我自己刚弄明白。为什么是落选,为什么是落选?这个问题可能对更多的读者非常有用。这个问题不是重复的,“类似问题”中的答案恰好也适用于这种情况。实际上,我认为对这个问题有更好的解释。