(function(){})()之间的区别;和function(){}();

时间:2009-01-08 04:03:33

标签: javascript syntax

  

可能重复:
  Are “(function ( ) { } ) ( )” and “(function ( ) { } ( ) )” functionally equal in JavaScript?

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

修改

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

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

3 个答案:

答案 0 :(得分:44)

Peter Michaux在An Important Pair of Parens中讨论了差异。

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

答案 1 :(得分:9)

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

答案 2 :(得分:4)

function(){}();

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

(function(){})();

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

function(){}

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

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

然后ff和ie将抛出错误