Javascript 将jQuery作为参数传递

Javascript 将jQuery作为参数传递,javascript,jquery,Javascript,Jquery,如果JQuery确实存在于作用域中,那么它们的行为是否会相同 $用于将作用域限制在每个函数内部,我想,我不知道为什么。第二个代码段是原始代码,我试图在调用jquery之前添加一个检查,就像在第一个代码段中一样 第一: (function () { if (!window.jQuery) { alert('Error: JQuery not loaded.'); return; }

如果JQuery确实存在于作用域中,那么它们的行为是否会相同

$用于将作用域限制在每个函数内部,我想,我不知道为什么。第二个代码段是原始代码,我试图在调用jquery之前添加一个检查,就像在第一个代码段中一样

第一:

(function () {
            if (!window.jQuery) {
                alert('Error: JQuery not loaded.');
             return;
            }
            main(jQuery);
        })();
        function main($, undefined) {
            alert("main 1");

            //do some work on $ 

        }
第二:

    (function ($) {
        if (!$) {
            alert('Error: JQuery not loaded.');
            return;
        }
        alert("main 2");

        //do some work on $ 

    })(jQuery);
第三(也许这稍微好一点?):


这对我来说是最好的解决办法

(function () {
                if (!window.jQuery) {
                    alert('Error: JQuery not loaded.');
                    return;
                }
                var main = function ($, undefined) {
                    alert("main 3");

                    //do some work on $ 

                }
                main(jQuery);
            })();

是的,但是在第一段代码中,函数
main
似乎在全局范围内,这意味着可以通过
window.main()
调用它,这意味着如果有任何库具有名为
main
的全局变量,它将被覆盖。除了@Varinder注释中列出的问题,虽然我选择使用第二个代码段,但它们都可以工作。这个
main
函数似乎基本上没有必要#2很好,不过您可能希望传递
window.jQuery
以避免获取引用错误。
(function () {
                if (!window.jQuery) {
                    alert('Error: JQuery not loaded.');
                    return;
                }
                var main = function ($, undefined) {
                    alert("main 3");

                    //do some work on $ 

                }
                main(jQuery);
            })();