Thanks to visit codestin.com
Credit goes to developer.mozilla.org

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

SyntaxError

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