From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../errors/unnamed_function_statement/index.html | 111 +++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html (limited to 'files/ru/web/javascript/reference/errors/unnamed_function_statement') diff --git a/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html b/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html new file mode 100644 index 0000000000..791a215d11 --- /dev/null +++ b/files/ru/web/javascript/reference/errors/unnamed_function_statement/index.html @@ -0,0 +1,111 @@ +--- +title: 'SyntaxError: function statement requires a name(функция оператор требует имя)' +slug: Web/JavaScript/Reference/Errors/Unnamed_function_statement +translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement +--- +
{{jsSidebar("Errors")}}
+ +

Сообщение

+ +
SyntaxError: ожидаемый идентификатор (Edge)
+SyntaxError: оператор функции требует имя [Firefox]
+SyntaxError: непредвиденный токен ( [Chrome]
+
+ +

Тип ошибки

+ +

{{jsxref("SyntaxError")}}

+ +

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

+ +

В коде есть оператор function, для которого требуется имя. Вам нужно будет проверить, как определены функции и нужно ли предоставить для них имя, или если рассматриваемая функция должна быть выражением функции, {{Glossary("IIFE")}}, или если код функции вообще правильно размещен в этом контексте.

+ +

Примеры

+ +

Операторы vs выражения

+ +

Оператор функции (или объявление функции) требует имя, это не будет работать:

+ +
function () {
+  return 'Hello world';
+}
+// SyntaxError: function statement requires a name
+
+ +

Вы можете использовать выражение функции (назначять) вместо:

+ +
var greet = function() {
+  return 'Hello world';
+};
+ +

Или, ваша функция возможно, предназначена для IIFE (немедленно вызываемое выражение функции), которое является функцией, которая запускается, как только она определена. В этом случае вам понадобится еще несколько брекетов:

+ +
(function () {
+
+})();
+ +

Помеченные функции

+ +

При использовании меток функций после ключевого слова function все равно потребуется указать имя функции. Это не работает:

+ +
function Greeter() {
+  german: function () {
+    return "Moin";
+  }
+}
+// SyntaxError: оператор функции требует имя
+
+ +

Это будет работать, например так:

+ +
function Greeter() {
+  german: function g() {
+    return "Moin";
+  }
+}
+ +

Методы обьекта

+ +

Если вы намеревались создать метод объекта, вам нужно будет создать объект. Тогда допустим следующий синтаксис без имени после ключевого слова function.

+ +
var greeter = {
+  german: function () {
+    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");
+  }
+);
+
+ +

Смотрите также

+ + -- cgit v1.2.3-54-g00ecf