为什么 JavaScript 对象中不能使用反引号

MrM*_*cal 3 javascript

为什么对象属性的反引号语法无效?例如,这是有效的:

\n
const test = {\n  "test1": "test2"\n}\n
Run Code Online (Sandbox Code Playgroud)\n

那么为什么 \xe2\x80\x99 不能有反引号呢?

\n
const test = {\n  `test1`: "test2"\n}\n//throws unexpected token error\n
Run Code Online (Sandbox Code Playgroud)\n

如果可以像这样使用反引号,那将非常有帮助,但我们可以\xe2\x80\x99t。是否有一个简单的替代方案,或者这可能在某些浏览器中有效?

\n

sna*_*nak 11

您需要将其放入括号中,因为它是在运行时评估的。

const test = {
  [`test1`]: "test2"
}
Run Code Online (Sandbox Code Playgroud)

正如 @Amadan 在评论中指出的那样,您可以将任何表达式放入括号中,将其用作属性键。

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#compulated_property_names (2认同)