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:
function () {
return "Hello world";
}
// SyntaxError: function statement requires a name
Sie können stattdessen eine Function-Expression (Zuweisung) verwenden:
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:
(function () {
// …
})();
Markierte Funktionen
Labels sind eine völlig andere Funktion als Funktionsnamen. Sie können ein Label nicht als Funktionsnamen verwenden.
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.
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.
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");
},
);