这三种形式的自我调用匿名函数有什么区别?

syn*_*sin 9 javascript function self-invoking-function

可能重复:
"(function(){})()"和"(function(){}())"在JavaScript中功能相同吗?

我正在阅读下面的文件.

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#patternity

当我查看这些示例时,自动调用匿名函数有三种形式.

一个是

(function() {
    //do something
})();
Run Code Online (Sandbox Code Playgroud)

而另一个是

function() {
    //do something
}();
Run Code Online (Sandbox Code Playgroud)

而另一个是

(function() {
    //do something
}());
Run Code Online (Sandbox Code Playgroud)

这三种形式有什么区别?

谢谢你的阅读!

Que*_*tin 6

第一个和最后一个实际上是相同的.差异是风格问题.

第二个是不安全的(取决于它的位置)它可能是函数声明而不是函数表达式,并且您不能立即调用函数声明.