在JavaScript中使用(function(){…})()有什么好处

在JavaScript中使用(function(){…})()有什么好处,javascript,closures,anonymous-function,Javascript,Closures,Anonymous Function,我注意到在JQuery中使用了以下代码结构 (function(){var l=this,g,y=l.jQuery,p=l.$,…})( 它似乎创建了一个函数,并调用它 采用这种方法与内联函数内容相比有什么好处?它为变量创建了一个作用域,特别是定义$,例如绑定到jQuery,而不管其他库如何覆盖它。将其视为匿名名称空间。它就像: var foo = function(){var l=this,g,y=l.jQuery,p=l.$,...}; foo(); 但是更简单,不需要全局变量。它创建一个

我注意到在JQuery中使用了以下代码结构

(function(){var l=this,g,y=l.jQuery,p=l.$,…})(

它似乎创建了一个函数,并调用它


采用这种方法与内联函数内容相比有什么好处?

它为变量创建了一个作用域,特别是定义
$
,例如绑定到
jQuery
,而不管其他库如何覆盖它。将其视为匿名名称空间。

它就像:

var foo = function(){var l=this,g,y=l.jQuery,p=l.$,...};
foo();

但是更简单,不需要全局变量。

它创建一个闭包,以防止与代码的其他部分发生冲突。见此:

如果您有其他使用
$()
方法的库,并且您还必须保留在jQuery中使用该方法的能力,那么这将非常方便。然后可以创建一个闭包,如下所示:

(function($) {
    // $() is available here
})(jQuery);

它允许在函数中包含局部变量和操作,而不必将它们转换为全局变量。

使用自调用匿名函数,您可以创建一个局部作用域,它非常高效,并且可以直接调用自身

你可以阅读它

重复:这一个也一样:问题是这些问题/答案的可查找性不好。如果我只知道“[javascript](function()”,那么搜索并不能很好地找到任何有用的东西。