SyntaxError: missing : after property id

Ngoại lệ JavaScript "missing : after property id" xảy ra khi đối tượng được tạo bằng cú pháp object initializer. Dấu hai chấm (:) phân tách khóa và giá trị cho các thuộc tính của đối tượng. Đôi khi dấu hai chấm này bị thiếu hoặc đặt sai vị trí.

Thông báo

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)

Loại lỗi

SyntaxError

Nguyên nhân?

Khi tạo đối tượng bằng cú pháp object initializer, dấu hai chấm (:) phân tách khóa và giá trị cho các thuộc tính của đối tượng.

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

Ví dụ

Dấu hai chấm so với dấu bằng

Đoạn code này thất bại vì dấu bằng không thể dùng theo cách này trong cú pháp object initializer.

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

Cách đúng là dùng dấu hai chấm, hoặc dùng dấu ngoặc vuông để gán thuộc tính mới sau khi đối tượng đã được tạo.

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

Hoặc:

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

Thuộc tính tính toán

Nếu bạn tạo khóa thuộc tính từ một biểu thức, bạn cần dùng dấu ngoặc vuông. Nếu không, tên thuộc tính không thể được tính toán:

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

Đặt biểu thức trong dấu ngoặc vuông []:

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

Xem thêm