SyntaxError: missing name after . operator

Der JavaScript-Ausnahmefehler "missing name after . operator" tritt auf, wenn es ein Problem mit der Verwendung des Punktoperators (.) für den Eigenschaftszugriff gibt.

Nachricht

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

Fehlertyp

Was ist schiefgelaufen?

Der Punktoperator (.) wird für den Eigenschaftszugriff verwendet. Sie müssen den Namen der Eigenschaft angeben, auf die Sie zugreifen möchten. Für berechneten Eigenschaftszugriff müssen Sie möglicherweise Ihren Zugriff von der Verwendung eines Punktes zu eckigen Klammern ändern. Diese ermöglichen es Ihnen, einen Ausdruck zu berechnen. Vielleicht beabsichtigten Sie stattdessen eine Verkettung? In diesem Fall wird ein Plus-Operator (+) benötigt. Bitte sehen Sie sich die nachstehenden Beispiele an.

Beispiele

Eigenschaftszugriff

Eigenschaftszugreifer in JavaScript verwenden entweder den Punkt (.) oder eckige Klammern ([]), jedoch nicht beides. Eckige Klammern ermöglichen den berechneten Eigenschaftszugriff.

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

Um diesen Code zu korrigieren, müssen Sie auf das Objekt wie folgt zugreifen:

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"

Eigenschaftszugriff vs. Verkettung

Wenn Sie von einer anderen Programmiersprache (wie PHP) kommen, ist es auch leicht, den Punktoperator (.) und den Verkettungsoperator (+) zu verwechseln.

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

// SyntaxError: missing name after . operator

Stattdessen müssen Sie ein Pluszeichen für die Verkettung verwenden:

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

Siehe auch