语法错误:属性 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" };