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