We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

SyntaxError: function statement requires a name

Fehlermeldung

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

Fehlertyp

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 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

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
Mitwirkende an dieser Seite: schlagi123
Zuletzt aktualisiert von: schlagi123,