我有以下插件:
;(function($, window, document)
{
...
...
})(jQuery, window, document);
我能理解是什么;是为了并且也意识到$是jQuery,但有人可以解释为什么函数后跟(jQuery,window,document);
答案 0 :(得分:10)
它被称为'自我ivoking'或'立即调用'功能。这意味着该函数在使用最后一组括号中的参数创建后立即运行。
答案 1 :(得分:3)
我不确定我完全理解你在问什么,但他们做的是将jQuery
对象,window
对象和document
对象传递给函数。
出于性能原因,他们很可能会这样做。这使得最小化器可以将对window
和document
的所有引用缩短为w
和d
,因为它是局部变量。在一个大型库中,可以节省几个字节。
此外,我相信(没有参考atm)与全局变量(实际上是微优化)相比,访问本地变量的速度稍快一些。
答案 2 :(得分:2)
这称为立即调用的函数表达式或自动执行的匿名函数。它使开发人员能够隐藏他的私人声明。
;( // <---------------+
// | encapsulate the function
function($, window, document) { // <--+ declare | and call it passing three
// | anonymous | arguments.
} // <--+ function |
// |
)(jQuery, window, document); // <---------------+
答案 3 :(得分:1)
这是一个Immediately-Invoked Function Expression
这意味着,该函数立即被声明并执行。这样做是为了创建一个新的范围。
答案 4 :(得分:1)
这是一个立即调用的匿名函数(所谓的IIFE)。
将jQuery
别名传递给$
,window
和document
,以便他们确保在外部环境中引用正确的版本。< / p>