关于javascript:将jquery作为参数传递给autoexecutable函数

Pass jquery as a parameter to an autoexecutable function

本问题已经有最佳答案,请猛点这里访问。

我编写了那个代码

1
2
3
4
5
(function($) {
    Batch = {
        ...
        ...
})(jQuery);

为什么将JQuery的引用作为参数传递?


这是为了确保在函数范围内,$变量引用了jQuery。

想象一下,同一页面上的其他供应商库或脚本是使用$变量:

1
2
3
4
5
6
$ = 42
...

(function() {
    console.log($) //--> 42
})()

但是,如果您将全局jQuery作为参数传递,例如在您的代码段中:

1
2
3
4
5
6
$ = 42
...

(function($) {
    console.log($) //--> ? (a,b){return new n.fn.init(a,b)} (this is jQuery)
})(jQuery)

它仍将引用jQuery。 这是因为在函数范围内,参数优先于具有相同名称的外部范围变量。

要了解有关javascript范围的更多信息,请查看这篇非常好的文章


当你想确定你的匿名自调用函数中的$等于Jquery而不是另一个库时,它很有用。