Spec-Zone.ru › JavaScript

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)

Тип ошибки

SyntaxError

Что пошло не так?

В коде есть оператор 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");
  },
);

См. также

  • Руководство по функциям
  • function
  • function expression
  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API