SyntaxError: function statement requires a name - JavaScript 编辑

错误提示

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

错误类型

SyntaxError

哪里出错了?

函数声明需要提供函数名称。你需要检查函数是如何定义的,是否需要为其提供名称,出现问题的函数是否需要声明为函数表达式或立即调用函数表达式(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");
  }
);

相关内容

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:134 次

字数:4823

最后编辑:7 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文