语法错误:属性 ID 后缺少冒号

当使用 对象初始化器 语法创建对象时,会发生 JavaScript 异常 "属性 ID 后缺少 :"。冒号 (:) 用于分隔对象属性的键和值。不知何故,此冒号丢失或放置错误。

消息

SyntaxError: Invalid shorthand property initializer (V8-based)
SyntaxError: missing : after property id (Firefox)
SyntaxError: Unexpected token '='. Expected a ':' following the property name 'x'. (Safari)
SyntaxError: Unexpected token '+'. Expected an identifier as property name. (Safari)

错误类型

哪里出错了?

使用 对象初始化器 语法创建对象时,冒号 (:) 用于分隔对象属性的键和值。

js
const obj = { propertyKey: "value" };

示例

冒号与等号

此代码失败,因为等号不能以这种方式在此对象初始化器语法中使用。

js
const obj = { propertyKey = "value" };
// SyntaxError: missing : after property id

正确的做法是使用冒号,或者在对象已创建后使用方括号分配新属性。

js
const obj = { propertyKey: "value" };

或者

js
const obj = {};
obj.propertyKey = "value";

计算属性

如果从表达式创建属性键,则需要使用方括号。否则无法计算属性名

js
const obj = { "b"+"ar": "foo" };
// SyntaxError: missing : after property id

将表达式放在方括号 []

js
const obj = { ["b" + "ar"]: "foo" };

另请参阅