自执行函数参数

时间:2013-03-28 13:07:03

标签: javascript jquery

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

(function($) {

})(jQuery);

如果我理解这一点,$ === jQuery在我的职能范围内是正确的。但在这种情况下,实际的“参数”jQuery是否会在我的函数中获得别名$

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

3 个答案:

答案 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