--- title: 'SyntaxError: function statement requires a name' slug: Web/JavaScript/Reference/Fehler/Unnamed_function_statement tags: - Error - Errors - JavaScript - SyntaxError translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement ---
{{jsSidebar("Errors")}}

Fehlermeldung

SyntaxError: function statement requires a name [Firefox]
SyntaxError: Unexpected token ( [Chrome]

Fehlertyp

{{jsxref("SyntaxError")}}

Was ist falsch gelaufen?

Es gibt eine Funktionsstatement im Code, welches einen Namen benötigt. Man muss überprüfen, wie Funktionen definiert sind und ob diese einen Namen benötigen oder ob diese Funktion ein Funktionsausdruck ist (eine {{Glossary("IIFE")}}) oder ob die Funktion im richtigen Kontext geschrieben ist.

Beispiele

Statements vs Ausdrücke

Ein Funktionsstatement (oder Funktionsdeklaration) benötigt einen Namen. Folgendes funktioniert nicht:

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

Man kann stattdessen ein Funktionsausdruck (Zuweisung) nutzen:

var greet = function() {
  return 'Hello world';
};

Manchmal soll auch eine auch eine IIFE (Immediately Invoked Function Expression) sein, welche eine Funktion ist, die nach der Definition direkt ausgeführt wird. Dafür müssen ein paar mehr Klammern benutzt werden:

(function () {

})();

Funktionen mit Labeln

Wenn man ein Funktionslabel benutzt, muss ein Funktionsnamen nach dem function Schlüsselwort stehen. Folgendes funktioniert nicht:

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

Das folgende funktioniert:

function Greeter() {
  german: function g() {
    return "Moin";
  }
}

Objektmethoden

Wenn man eine Methode für ein Objekt erstellen möchte, muss ein Objekt erstellt werden. Die folgende Syntax ohne einen Namen nach dem function Schlüsselwort ist zulässig.

var greeter = {
  german: function () {
    return "Moin";
  }
};

Callback Syntax

Zudem sollte die Syntax bei Callbackfunktionen geprüft werden. Komma- und Klammersetzung kann schnell schwierig werden.

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

Richtig ist folgendes:

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

Siehe auch