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