javascript中的独立括号

standalone parentheses in javascript

本文关键字:独立 javascript      更新时间:2023-09-26

可能的重复:
JavaScript:为什么使用匿名函数包装器
Javascript函数
(function(){})()构造是如何工作的?人们为什么使用它?

我看到一些javascript代码的格式如下:

(
 function()
 {
   //stmt
 }
)();

我们为什么要使用这些独立的括号?非常感谢。

此代码创建一个函数表达式,然后立即调用它。

它与相同

var unnamed = function() { ... };
(unnamed) ();

;之前的最后两个参数直接执行匿名函数。另外两个偏执狂是可选的,只是某种惯例。

这种模式通常用于不污染全局命名空间:

(function() {
  var a = 42;
})();
alert(a); // a is undefined

Paul Irish有一个非常好的关于这个和其他javascript模式的屏幕截图:http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/

这是Javascript中所谓模块模式的基础。查看这些文章了解更多信息:

http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth

http://yuiblog.com/blog/2007/06/12/module-pattern/

本质上,正如文章所述,这种模式非常适合维护隐私和状态,但也允许Javascript模块的松散耦合和链接。

独立括号()表示执行函数,在这段代码中,它是一个匿名函数。

创建命名函数并调用它,从而避免只调用一次的函数的名称空间和内存污染。

虽然类似于:

var f = function () { ... };
f();

此变体避免创建变量f,从而节省内存并避免名称空间冲突。