在立即函数中运行此代码有什么区别?

时间:2011-10-14 12:48:51

标签: javascript

我在javascript文件中看到了很多这种模式:

(function ($) 
{
   //Perform operation X
}(jQuery));

将上述代码放在js文件中与以下内容之间是否有区别:

function myFunc($) 
{
   //Perform operation X
}
myFunc(jQuery);

或者它只是更简洁?

3 个答案:

答案 0 :(得分:5)

您的第二个代码段定义了一个公共符号myFunc。如果其他人使用该符号作为库,您将覆盖它并可能破坏其功能。第一个片段没有名称,因此更安全。

答案 1 :(得分:2)

前者对后者的唯一优势是您没有使用变量名称(myFunc)污染范围。

即。在第二个示例中,如果您已在同一范围内有一个名为myFunc的变量,则其值将被该函数覆盖,而在第一个示例中,情况并非如此。

此外,第二个示例显然允许您多次调用myFunc,其中 - 第一个示例仅允许一次。

答案 2 :(得分:2)

首先,我认为您的第一个代码段应为:

(function ($) 
{
   //Perform operation X
})(jQuery);

据我所知,两个代码之间没有区别,除了第二个代码创建函数,将它存储在全局变量中然后调用它,无论第一个是否创建一个匿名函数并调用它程。