SyntaxError: Function-Anweisung erfordert einen Namen

Die JavaScript-Ausnahme "function statement requires a name" tritt auf, wenn es eine Function-Anweisung im Code gibt, die einen Namen erfordert.

Meldung

SyntaxError: Function statements require a function name (V8-based)
SyntaxError: function statement requires a name (Firefox)
SyntaxError: Function statements must have a name. (Safari)

Fehlertyp

Was ist schiefgelaufen?

Es gibt eine Function-Anweisung im Code, die einen Namen erfordert. Sie müssen überprüfen, wie Funktionen definiert sind, und ob Sie einen Namen dafür angeben müssen oder ob die betreffende Funktion eine Function-Expression, ein IIFE sein muss, oder ob der Funktionscode in diesem Kontext überhaupt korrekt platziert ist.

Beispiele

Anweisungen vs. Ausdrücke

Eine Function-Anweisung (oder Function-Deklaration) erfordert einen Namen. Das wird nicht funktionieren:

js
function () {
  return "Hello world";
}
// SyntaxError: function statement requires a name

Sie können stattdessen eine Function-Expression (Zuweisung) verwenden:

js
const greet = function () {
  return "Hello world";
};

Wenn Ihre Funktion als IIFE (sofort ausgeführter Funktionsausdruck, der eine Funktion ist, die ausgeführt wird, sobald sie definiert ist) gedacht ist, müssen Sie ein paar weitere Klammern hinzufügen:

js
(function () {
  // …
})();

Markierte Funktionen

Labels sind eine völlig andere Funktion als Funktionsnamen. Sie können ein Label nicht als Funktionsnamen verwenden.

js
function Greeter() {
  german: function () {
    return "Moin";
  }
}
// SyntaxError: function statement requires a name

Außerdem sind markierte Funktionsdeklarationen selbst ein veraltetes Feature. Verwenden Sie stattdessen reguläre Funktionsdeklarationen.

js
function Greeter() {
  function german() {
    return "Moin";
  }
}

Objektmethoden

Wenn Sie die Erstellung einer Methode eines Objekts beabsichtigten, müssen Sie ein Objekt erstellen. Die folgende Syntax ohne Namen nach dem function-Schlüsselwort ist dann gültig.

js
const greeter = {
  german: function () {
    return "Moin";
  },
};

Sie können auch die Methodensyntax verwenden.

js
const greeter = {
  german() {
    return "Moin";
  },
};

Callback-Syntax

Überprüfen Sie auch Ihre Syntax bei der Verwendung von Callbacks. Klammern und Kommas können schnell verwirrend werden.

js
promise.then(
  function () {
    console.log("success");
  });
  function () {
    console.log("error");
}
// SyntaxError: function statement requires a name

Korrekt wäre:

js
promise.then(
  function () {
    console.log("success");
  },
  function () {
    console.log("error");
  },
);

Siehe auch