为了防止prototype.js与jquery发生冲突,我将jquery代码包装在以下片段中:
(function($) {
})(jQuery);
如果我理解这一点,$ === jQuery
在我的职能范围内是正确的。但在这种情况下,实际的“参数”jQuery
是否会在我的函数中获得别名$
?
如果我的假设是正确的,我是否需要在两个地方都传递jQuery
以便将其称为jQuery
,或者可以在函数末尾传递它? / p>
答案 0 :(得分:3)
在您的IIFE中,您可以使用$
或jQuery
- 它们都在范围内。
实际上只有(jQuery)
作为参数传递 - $
只是函数参数(因此别名为{{ 1}})。
要看到这一点,您的代码几乎等同于:
jQuery
除了你的IIFE是一个匿名函数。
答案 1 :(得分:1)
如果我理解这一点,$ === jQuery在我的函数中会是真的。但是在这种情况下实际的“参数”jQuery,它在我的函数中得到别名$?
是。 $
是参数名称,变量jQuery
是您作为参数传递的内容 - 它可以是任何表达式。
如果我的假设是正确的,我是否需要在两个地方传递jQuery以便将其称为jQuery,或者可以在函数末尾传递它?
是的,您需要重命名参数。只有它没有多大意义,因为你可以只引用全局jQuery
变量(除非你打算覆盖它,例如使用不同的jQuery版本) - $
别名只是为了简洁起见。如果您想避免与Prototype混淆,请改用jQ
。
答案 2 :(得分:0)
在闭包内部,只有$
可靠地引用了jQuery库;更具体地说,那个时候的库版本。
之后加载另一个版本的库时,只有$
仍指向您的期望; jQuery
符号将被后一版本替换。
如果您希望在函数中使用jQuery
别名,则需要在函数参数中将$
重命名为jQuery
。