关于javascript:为什么需要将jQuery对象作为参数传递给闭包?

Why need to pass jQuery object as parameter to closure?

本问题已经有最佳答案,请猛点这里访问。

为了避免JavaScript代码中的全局变量,我多次看到人们使用这个结构:

1
2
3
4
(function($) {
    // here code
    // here code
})(jQuery);

所以我有疑问:为什么我们需要将函数参数声明为$以及为什么我们需要将jQuery对象作为参数传递?


你不必。 您可以将函数参数命名为您想要的任何名称。 这只是人们使用jQuery的常见/最佳实践,因为使用$作为jQuery库对象的别名是很常见的。

您应该这样做的原因是因为有其他库使用$作为其库对象的别名。 需要避免与这些库的冲突,因为函数关闭将确保$成为包装函数内的jQuery对象。

这是一个例子:

1
2
3
(function (myJqueryAlias) {
     console.log(myJqueryAlias('document') === jQuery('document'));
})(jQuery);


有了这个你存档,在这个块你还有$ as jQuery,你仍然可以编写像"$("selector")"而不是"jQuery("selector")"的东西。
在这个块之外,变量$仍然是应该的(例如你使用另一个使用$的JSLib)