7

我有以下代码,我知道它是一个 IIFE。但是,我一直无法理解 (jQuery) 和 ($) 是什么。我知道这与将 jQuery 的引用传递给 IIFE 有关,但有人可以清楚地解释我的目的吗?感谢您的帮助和时间:-)

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

1 回答 1

15

$是函数的参数。 jQuery是调用函数时作为该参数传递的内容。

可以这样想:

function init($) {
   // code can use $ here as a shortcut for jQuery
   // even if $ has a different definition globally or isn't defined globally
}

init(jQuery);

除了这个例子创建了一个全局符号之外init,这个和你的 IIFE 的执行是相同的。两者都定义了一个函数并立即调用它。

$是函数的参数。 jQuery是作为该参数传递的内容。这用于在该函数内部定义$jQuerywhile 的快捷方式,而不影响$. 有时也会有轻微的性能优势,因为在本地定义的符号(作为局部变量或命名参数)可以比全局符号稍快访问。

IIFE 的优点是没有定义新的全局符号。除此之外,它的执行与此代码相同。

于 2012-09-08T16:16:19.823 回答