匿名函数是否需要括号括起来?

时间:2017-02-25 07:53:01

标签: javascript

我看过这样的JavaScript:

function () {
   // do something
}()

最近这样的事情:

(function () {
   // do something
})()

有什么区别吗?两者都立即执行正确吗?

修改
关于第一个例子的说明。该函数正从另一个应用程序传递到浏览器,因此我的结果没有错误。在浏览器中运行时会抛出错误。在深入研究之后,我发现应用程序API正在将函数传递给eval。以上两个例子都适用于我,这就是我提出这个问题的原因。

1 个答案:

答案 0 :(得分:3)

这两个功能都不会立即执行。立即调用的函数表达式在的末尾都有括号。像这样:

(function () {
    console.log("not hello");
});

(function () {
    console.log("hello");
})();
//^^

括起函数的括号将其转换为返回函数本身的表达式。然后,您只需使用()调用返回的值(即函数)。看看IIFE

编辑:编辑完成后,第一个函数只会抛出SyntaxError: Unexpected token (