SyntaxError: Funktionsanweisung erfordert einen Namen
Der JavaScript-Fehler "function statement requires a name" tritt auf, wenn eine Funktionsanweisung im Code vorhanden ist, die einen Namen benötigt.
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 schiefgelaufen ist
Es gibt im Code eine Funktionsanweisung, die einen Namen benötigt. Sie müssen überprüfen, wie Funktionen definiert sind und ob Sie einen Namen dafür angeben müssen, oder ob die betreffende Funktion ein Funktionsausdruck, ein IIFE sein sollte, oder ob der Funktionscode überhaupt korrekt in diesem Kontext platziert ist.
Beispiele
Anweisungen vs. Ausdrücke
Eine Funktionsanweisung (oder Funktionsdeklaration) erfordert einen Namen. Dies wird nicht funktionieren:
function () {
return "Hello world";
}
// SyntaxError: function statement requires a name
Sie können stattdessen einen Funktionsausdruck (Zuweisung) verwenden:
const greet = function () {
return "Hello world";
};
Wenn Ihre Funktion ein IIFE (Immediately Invoked Function Expression, eine Funktion, die sofort ausgeführt wird, sobald sie definiert ist) sein soll, müssen Sie einige weitere Klammern hinzufügen:
(function () {
// …
})();
Benannte Funktionen
Labels sind eine völlig andere Funktion als Funktionsnamen. Sie können ein Label nicht als Funktionsname verwenden.
function Greeter() {
german: function () {
return "Moin";
}
}
// SyntaxError: function statement requires a name
Außerdem sind benannte Funktionsdeklarationen selbst ein veraltetes Feature. Verwenden Sie stattdessen reguläre Funktionsdeklarationen.
function Greeter() {
function german() {
return "Moin";
}
}
Objektmethoden
Wenn Sie beabsichtigen, eine Methode eines Objekts zu erstellen, müssen Sie ein Objekt erstellen. Die folgende Syntax ohne Namen nach dem function
-Schlüsselwort ist dann gültig.
const greeter = {
german: function () {
return "Moin";
},
};
Sie können auch die Methodensyntax verwenden.
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.
promise.then(
function () {
console.log("success");
});
function () {
console.log("error");
}
// SyntaxError: function statement requires a name
Korrekt wäre:
promise.then(
function () {
console.log("success");
},
function () {
console.log("error");
},
);