Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的独立括号_Javascript - Fatal编程技术网

javascript中的独立括号

javascript中的独立括号,javascript,Javascript,可能的重复项: 我在javascript中看到了以下格式的一些代码: ( function() { //stmt } )(); 为什么我们要使用这些独立的括号?谢谢。此代码创建一个函数表达式,然后立即调用它 这和 var unnamed = function() { ... }; (unnamed) (); 独立括号()意味着执行函数,在这段代码中,它是一个匿名函数。在之前的最后两个parantises直接执行匿名函数。另外两个偏执是可选的,只是某种约定 此模式通常用于不

可能的重复项:


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

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

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

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

这和

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

(unnamed) ();

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

之前的最后两个parantises直接执行匿名函数。另外两个偏执是可选的,只是某种约定

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

(function() {
  var a = 42;
})();

alert(a); // a is undefined

Paul Irish对此和其他javascript模式有一个非常好的屏幕演示:

这是javascript中所谓的模块模式的基础。有关更多信息,请参阅以下文章:


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

创建注释性函数并调用它,因此避免了对只调用一次的函数的名称空间和内存的污染

尽管类似于:

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

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

OP中的示例不是模块模式,而是一个立即执行的简单匿名函数表达式。只有当模块模式实际创建了一个对象,并且该对象的方法可以在匿名函数之外访问时,它才是模块模式——通常通过返回所述对象来完成,尽管还有其他方法。但是还有其他非模块的原因,为什么您可以将一些代码包装到一个匿名立即执行的函数中,例如,为一个特定的计算创建一些临时工作变量,而不污染全局名称空间。我仍然喜欢这些资源。他们很好。@nnnnnn:同意,这不是一种模式,而是一种模式的基础。我已经相应地编辑了我的文章。投票表决。