0

为了防止prototype.js与jquery发生冲突,我将我的jquery代码包装在以下代码段中:

(function($) {

})(jQuery);

如果我正确地理解了这一点,$ === jQuery那么在我的功能中将是正确的。jQuery但是在这种情况下,实际的“参数”是$在我的函数中获取别名吗?

如果我的假设是正确的,我是否需要传递jQuery两个地方才能调用它jQuery,还是只在函数末尾传递它可以吗?

4

3 回答 3

3

在您的 IIFE 中,您可以使用其中一个$jQuery- 它们都在范围内。

只有(jQuery)实际作为参数传递-$只是函数参数(因此别名为jQuery)。

要看到这一点,您的代码几乎等同于:

var f = function($) {
    ...
};

f(jQuery);

除了你的 IIFE 是一个匿名函数。

于 2013-03-28T13:08:24.747 回答
1

如果我正确理解这一点,$ === jQuery 在我的函数中将是正确的。但是在这种情况下,实际的“参数”jQuery 是在我的函数中获取别名 $ 吗?

是的。$是参数名称,变量jQuery是作为参数传入的 - 它可以是任何表达式。

如果我的假设是正确的,我是否需要在两个地方都传递 jQuery 才能将其称为 jQuery,或者只在函数末尾传递它是否可以?

是的,您需要重命名参数。只是它没有多大意义,因为你可以只引用全局jQuery变量(除非你打算覆盖它,例如使用不同的 jQuery 版本)——$别名只是为了简洁。如果您想避免与 Prototype 混淆,请jQ改用。

于 2013-03-28T13:11:37.307 回答
0

在闭包内部,只$可靠地引用 jQuery 库;更具体地说,当时的库版本。

之后加载另一个版本的库时,$仍然指向您期望的内容;该jQuery符号将被后一个版本替换。

如果您希望jQuery在函数内使用别名,则需要在函数参数中重命名$为。jQuery

于 2013-03-28T13:12:58.767 回答