From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../errors/unnamed_function_statement/index.html | 114 +++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/errors/unnamed_function_statement/index.html (limited to 'files/zh-cn/web/javascript/reference/errors/unnamed_function_statement') diff --git a/files/zh-cn/web/javascript/reference/errors/unnamed_function_statement/index.html b/files/zh-cn/web/javascript/reference/errors/unnamed_function_statement/index.html new file mode 100644 index 0000000000..83d147aaab --- /dev/null +++ b/files/zh-cn/web/javascript/reference/errors/unnamed_function_statement/index.html @@ -0,0 +1,114 @@ +--- +title: 'SyntaxError: function statement requires a name' +slug: Web/JavaScript/Reference/Errors/Unnamed_function_statement +tags: + - JavaScript + - 语法错误 + - 错误提示 +translation_of: Web/JavaScript/Reference/Errors/Unnamed_function_statement +--- +
{{jsSidebar("Errors")}}
+ +

错误提示

+ +
SyntaxError: function statement requires a name [Firefox]
+SyntaxError: Unexpected token ( [Chrome]
+
+ +

错误类型

+ +

{{jsxref("SyntaxError")}}

+ +

哪里出错了?

+ +

函数声明需要提供函数名称。你需要检查函数是如何定义的,是否需要为其提供名称,出现问题的函数是否需要声明为函数表达式或立即调用函数表达式({{Glossary("IIFE")}}),以及函数在上下文环境中出现的位置是否正确。

+ +

示例

+ +

语句与表达式

+ +

函数语句(或函数声明)需要命名,以下写法是不正确的:

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

你可以使用函数表达式(赋值)来代替:

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

者是你想将其作为立即调用函数表达式(IIFE,Immediately Invoked Function Expression),也就是定义后立即执行的函数。在这种情况下你需要用到更多的括号:

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

标号函数(Labeled functions)

+ +

你使用函数标号(labels)的时候, 也需要在关键词 function 后面提供一个函数名称. 这样的代码是不能运行的:

+ +
function Greeter() {
+  german: function () {
+    return "Moin";
+  }
+}
+// SyntaxError: function statement requires a name
+
+ +

这个例子可以正常运行:

+ +
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