javascript中的独立括号

时间:2011-06-19 14:02:33

标签: javascript

  

可能重复:
  JavaScript: Why the anonymous function wrapper?
  A Javascript function
  How does the (function() {})() construct work and why do people use it?

我在javascript中看到了以下格式的一些代码:

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

为什么我们确实使用这些独立的括号?谢谢。

5 个答案:

答案 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,从而节省内存并避免名称空间冲突。