可能重复:
Location of parenthesis for auto-executing anonymous JavaScript functions?
问题是重复的 Location of parenthesis for auto-executing anonymous JavaScript functions? 和 What do parentheses surrounding a object/function/class declaration mean?
真的很好奇,这段代码中括号的用途是什么:
(function() {})();
这看起来像我一样容易写:
var x=function(){};
(x)();
使用jQuery插件我们会做类似......
(function($) {})(jQuery);
括号有什么用处?
答案 0 :(得分:2)
使用括号(围绕函数),您不必声明名称,乱丢命名空间。并且,它们用于提醒读者您的代码,因为您正在使用自我调用函数。
第二组括号实际上调用/调用刚刚创建的(匿名)函数。由于Javascript函数实际上只是变量(或CS语言中的“第一类对象”),因此您刚刚创建了一个变量(在第一组括号中),您可以使用第二组调用它。
以下是一个例子:
function callFunc(f) {
return f("test");
}
callFunc(alert);
在示例中,f
实际引用了函数alert
,您可以在函数代码中使用括号调用它。
答案 1 :(得分:1)
在jQuery示例的情况下,您定义了一个匿名函数,该函数接受一个名为$的参数,然后将jQuery对象传递给它。它将保留在该范围内,而不会与具有全局定义的其他框架发生冲突。
除此之外,个人看起来更清洁。