我在javascript文件中看到了很多这种模式:
(function ($)
{
//Perform operation X
}(jQuery));
将上述代码放在js文件中与以下内容之间是否有区别:
function myFunc($)
{
//Perform operation X
}
myFunc(jQuery);
或者它只是更简洁?
答案 0 :(得分:5)
您的第二个代码段定义了一个公共符号myFunc
。如果其他人使用该符号作为库,您将覆盖它并可能破坏其功能。第一个片段没有名称,因此更安全。
答案 1 :(得分:2)
前者对后者的唯一优势是您没有使用变量名称(myFunc
)污染范围。
即。在第二个示例中,如果您已在同一范围内有一个名为myFunc
的变量,则其值将被该函数覆盖,而在第一个示例中,情况并非如此。
此外,第二个示例显然允许您多次调用myFunc
,其中 - 第一个示例仅允许一次。
答案 2 :(得分:2)
首先,我认为您的第一个代码段应为:
(function ($)
{
//Perform operation X
})(jQuery);
据我所知,两个代码之间没有区别,除了第二个代码创建函数,将它存储在全局变量中然后调用它,无论第一个是否创建一个匿名函数并调用它程。