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");