可能重复:
Are “(function ( ) { } ) ( )” and “(function ( ) { } ( ) )” functionally equal in JavaScript?
这是我还没有想到的东西,但是我一直在使用function(){}()因为我添加了括号我的VIM语法突出显示,虽然我已经看过(function() {})()很多次,也许它是IE的东西?
修改
var singleton = function() {
// code
}();
var singleton = (function() {
// code
})();
答案 0 :(得分:44)
Peter Michaux在An Important Pair of Parens中讨论了差异。
基本上,括号是一个约定,表示紧接着调用的函数表达式,而不是普通函数。特别是如果函数体很长,这会减少意外,
答案 1 :(得分:9)
额外的括号组使您更清楚地构建函数然后调用它。这是一种编码风格的东西,而不是功能性的东西。
答案 2 :(得分:4)
function(){}();
在大多数浏览器中不起作用。你应该在函数周围使用括号来执行它
(function(){})();
然后浏览器会知道最后一个括号应该应用于所有表达式
function(){}
UPD :如果你不使用括号,浏览器可能会误解你。如果您只是调用该函数并取消结果
function() {
alert(1);
}();
然后ff和ie将抛出错误