关于javascript:(function(){})()之间的区别; 和function(){}();

Difference between (function(){})(); and function(){}();

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Are “(function ( ) { } ) ( )” and “(function ( ) { } ( ) )” functionally equal in JavaScript?


这是我还没有想到的东西,但是我一直在使用function(){}(),因为我添加了括号后我的VIM语法突出显示,虽然我已经看过(function(){}) ()很多次,也许它是一个IE的东西?


编辑:

1
2
3
4
5
6
7
var singleton = function() {
    // code
}();

var singleton = (function() {
    // code
})();



Peter Michaux讨论了一对重要的Parens的区别。


基本上,括号是一种约定,表示紧接着调用的函数表达式,而不是普通函数。 特别是如果功能体很长,这会减少意外,



额外的括号集使您更清楚地构建函数然后调用它。 这是一种编码风格的东西,而不是功能性的东西。


1
function(){}();


在大多数浏览器中不起作用。 您应该在函数周围使用括号来执行它

1
(function(){})();


然后浏览器会知道最后一个括号应该应用于所有表达式

1
function(){}


UPD:如果你不使用括号,浏览器可能会误解你。 如果您只是调用该函数并取消结果

1
2
3
function() {
    alert(1);
}();


那么ff和ie会抛出错误