Javascript 为什么需要将jQuery对象作为参数传递给闭包?

Javascript 为什么需要将jQuery对象作为参数传递给闭包?,javascript,jquery,Javascript,Jquery,为了避免JavaScript代码中的全局变量,我多次看到人们使用这种结构: (function($) { // here code // here code })(jQuery); 所以我有一些问题:为什么我们需要将函数参数声明为$,为什么我们需要将jQuery对象作为参数传递?通过这一点,您可以存档在这个块中,您仍然将$作为jQuery,并且您仍然可以编写类似“$(“选择器”)”的内容,而不是“jQuery”(“选择器”)”。 在这个块之外,变量$仍然是它应该是的(例如,您使

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

(function($) {
    // here code
    // here code
})(jQuery);

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

通过这一点,您可以存档在这个块中,您仍然将$作为jQuery,并且您仍然可以编写类似“$(“选择器”)”的内容,而不是“jQuery”(“选择器”)”。
在这个块之外,变量$仍然是它应该是的(例如,您使用的另一个JSLib也使用了$)

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

之所以应该这样做,是因为还有其他库使用$作为其库对象的别名。需要避免与这些库发生冲突,因为函数闭包将确保$jQuery对象位于包装函数内

下面是一个例子:

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

如果在其他代码段中使用
$
表示非jQuery的内容,会发生什么情况?这与此有什么关系?你是说“结案”吗?我知道关于美元的一切。您应该阅读我的更新答案您的
==
测试永远不会通过-jQuery将为
$(“文档”)创建一个全新的对象
每次调用时,都会有一个不同的引用。jQuery是否已经定义了$并不重要,除非您100%确定$永远不会被其他库或您的代码覆盖。@Juno我可以在这个闭包中访问jQuery的
$
对象吗?如果可以的话,这意味着将jQuery对象作为参数传递的意义只是在访问
$
时避免冲突。如果您想使用$,只需将参数命名为$。在闭包中,我没有访问
$
变量的权限?或者将
jQuery
显式传递为
$
的唯一原因是为了避免冲突?@MyTitle是当调用此函数外部的jQuery.noConflict()时,则您无权访问$。有关更多信息,请参阅