立即调用函数表达式(IIFE)在JavaScript中 - 传递jQuery

时间:2012-09-08 16:14:04

标签: javascript jquery iife

我有以下代码,我知道这是一个IIFE。但是,我从来没有能够掌握(jQuery)和($)是什么。我知道这与将jQuery的引用传递给IIFE有关,但有人可以清楚地向我解释它们的用途吗?谢谢你的帮助和时间: - )

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

1 个答案:

答案 0 :(得分:14)

$是函数的参数。 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是作为该参数传递的内容。这用于在$内定义jQuery作为$的快捷方式而不影响{{1}}的全局定义。有时也会有轻微的性能优势,因为本地定义的符号(作为局部变量或命名参数)可以比全局符号稍微快一些。

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