--- 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 ---
SyntaxError: function statement requires a name [Firefox] SyntaxError: Unexpected token ( [Chrome]
{{jsxref("SyntaxError")}}
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.
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 () { })();
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"; } }
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"; } };
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"); } );