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

另见