SyntaxError: для оператора function требуется имя
Исключение JavaScript "function statement requires a name" (для оператора function требуется имя) возникает, когда в коде есть оператор function, которому требуется имя.
Сообщение
SyntaxError: Function statements require a function name (V8-based) SyntaxError: function statement requires a name (Firefox) SyntaxError: Function statements must have a name. (Safari)
Тип ошибки
Что пошло не так?
В коде есть оператор function, которому требуется имя. Вам нужно проверить, как определяются функции, и если вы должны указать для нее имя, или если функция, о которой идет речь, должна быть выражением функции, IIFE, или если код функции вообще размещен в этом контексте правильно.
Примеры
Операторы против выражений
Оператор function (или объявление функции) требует имя. Это не сработает:
function () {
return "Hello world";
}
// SyntaxError: function statement requires a name
Вместо этого вы можете использовать выражение function (присваивание):
const greet = function () {
return "Hello world";
};
Если ваша функция предназначена для использования в качестве IIFE (Immediately Invoked Function Expression, то есть функция, которая выполняется сразу после определения), вам потребуется добавить еще несколько скобок:
(function () {
// …
})();
Функции с метками
Метки — это совершенно другая функция, нежели имена функций. Вы не можете использовать метку в качестве имени функции.
function Greeter() {
german: function () {
return "Moin";
}
}
// SyntaxError: function statement requires a name
Кроме того, сами объявления функций с метками являются устаревшей функцией. Вместо них используйте обычные объявления функций.
function Greeter() {
function german() {
return "Moin";
}
}
Методы объекта
Если вы намеревались создать метод объекта, вам нужно будет создать объект. В таком случае допустим следующий синтаксис без имени после ключевого слова function.
const greeter = {
german: function () {
return "Moin";
},
};
Вы также можете использовать синтаксис методов.
const greeter = {
german() {
return "Moin";
},
};
Синтаксис обратного вызова
Также проверьте синтаксис при использовании обратных вызовов. Скобки и запятые могут быстро запутать.
promise.then(
function () {
console.log("success");
});
function () {
console.log("error");
}
// SyntaxError: function statement requires a name
Правильно будет:
promise.then(
function () {
console.log("success");
},
function () {
console.log("error");
},
);
См. также
- Руководство по функциям
functionfunctionexpression- IIFE
- Labeled statement
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Unnamed_function_statement