SyntaxError: missing name after . operator

當使用點運算子(.)進行屬性訪問時,如果用法存在問題,就會出現 JavaScript 異常“missing name after . operator”。

訊息

SyntaxError: missing name after . operator (Firefox)
SyntaxError: Unexpected token '['. Expected a property name after '.'. (Safari)

錯誤型別

SyntaxError

哪裡出錯了?

點運算子(.)用於屬性訪問。你必須指定想要訪問的屬性的名稱。對於計算屬性訪問,你可能需要將點運算子改為方括號。方括號允許你計算表示式。也許你的本意是進行字串連線?這種情況下需要使用加號運算子(+)。請參閱下面的示例。

示例

屬性訪問

JavaScript 中的屬性訪問器使用點(.)或方括號([]),但不能兩者都用。方括號允許計算屬性訪問。

js
const obj = { foo: { bar: "baz", bar2: "baz2" } };
const i = 2;

obj.[foo].[bar]
// SyntaxError: missing name after . operator

obj.foo."bar"+i;
// SyntaxError: missing name after . operator

要修復此程式碼,你需要像這樣訪問物件:

js
obj.foo.bar; // "baz"
// or alternatively
obj["foo"]["bar"]; // "baz"

// computed properties require square brackets
obj.foo["bar" + i]; // "baz2"
// or as template literal
obj.foo[`bar${i}`]; // "baz2"

屬性訪問與字串連線

如果你有其他程式語言(如 PHP)的背景,也很容易混淆點運算子(.)和連線運算子(+)。

js
console.log("Hello" . "world");

// SyntaxError: missing name after . operator

你應該使用加號來進行連線:

js
console.log("Hello" + "World");

另見