SyntaxError: . 运算符后缺少名称

JavaScript 异常 "在 . 运算符后缺少名称" 发生在使用点运算符 (.) 进行 属性访问 时出现问题。

消息

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

错误类型

出了什么问题?

点运算符 (.) 用于 属性访问。您需要指定要访问的属性的名称。对于计算属性访问,您可能需要将属性访问从使用点更改为使用方括号。这将允许您计算表达式。您可能想进行连接而不是?在这种情况下,需要加号运算符 (+)。请参见下面的示例。

示例

属性访问

属性访问器 在 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");

另请参阅