立即调用函数表达式(IIFE)在JavaScript中 – 传递jQuery
我有以下代码,我知道这是一个IIFE。 但是,我从来没有能够掌握(jQuery)和($)是什么。 我知道将jQuery的引用传递给IIFE有什么关系,但有人可以清楚地向我解释它们的用途吗? 谢谢你的帮助和时间:-)
(function ($) { //code })(jQuery);
$
是函数的参数。 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
的快捷方式,而不会影响$
的全局定义。 有时候还会有轻微的性能优势,因为本地定义的符号(作为局部变量或命名参数)可以比全局符号稍微快一些。
IIFE的优点是没有定义新的全局符号。 除此之外,它与此代码的执行完全相同。