可能重复:
JavaScript: Why the anonymous function wrapper?
A Javascript function
How does the (function() {})() construct work and why do people use it?
我在javascript中看到了以下格式的一些代码:
(
function()
{
//stmt
}
)();
为什么我们确实使用这些独立的括号?谢谢。
答案 0 :(得分:4)
此代码创建一个函数表达式,然后立即调用它。
与
相同var unnamed = function() { ... };
(unnamed) ();
答案 1 :(得分:1)
;
之前的最后两个parantheses直接执行匿名函数。另外两个parantheses是可选的,只是某种约定。
此模式通常用于不污染全局命名空间:
(function() {
var a = 42;
})();
alert(a); // a is undefined
保罗爱尔兰有关于这个和其他javascript模式的非常好的截屏视频:http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/
答案 2 :(得分:1)
这是Javascript中所谓的模块模式的基础。有关更多信息,请参阅这些文章:
http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
http://yuiblog.com/blog/2007/06/12/module-pattern/
基本上,正如文章所述,这种模式非常适合维护隐私和状态,但也允许松散耦合和链接您的Javascript模块。
答案 3 :(得分:0)
独立括号()
表示执行该函数,在此代码中,它是一个匿名函数。
答案 4 :(得分:0)
创建匿名函数并调用它,从而避免污染名称空间和内存,只调用一次。
虽然类似于:
var f = function () { ... };
f();
此变体避免创建变量f,从而节省内存并避免名称空间冲突。