Ahm*_*med 14 javascript jquery
有什么区别:
(function() {
/*..........*/
})();
Run Code Online (Sandbox Code Playgroud)
并且:
(function($) {
/*..........*/
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
Bri*_*and 13
其他人解释了不同之处,但不是为什么你使用后者.
该$变量是最常用的jQuery.如果你有一个加载jQuery的脚本标签和另一个加载你的代码的脚本标签,那就完全没问题了.现在将prototype.js投入混合.如果你加载prototype.js然后加载jQuery,$仍然是jQuery.反过来,现在$是prototype.js.
如果您尝试$在此类页面上使用,则可能会出现错误或奇怪的行为.
StackOverflow上有很多关于这个问题的问题.插件不应该对它们加载的页面有很多假设,所以他们在防御中使用这种模式.
\n\n\n我问 (function(){/ \xe2\x80\xa6 /})();之间是否有区别 和 (函数($){/ \xe2\x80\xa6 /})(jQuery);
\n
有点差别。如果(function($){/*\xe2\x80\xa6*/})(jQuery);没有 jQuery,您将在页面加载后立即收到错误消息。当基于 jquery 的代码在 jQuery 之前包含时,检测 jquery 缺失或脚本包含顺序不正确会更简单。
当(function(){/*\xe2\x80\xa6*/})();此构造中的代码实际调用 jQuery 方法之一时,您会收到错误消息。检测此错误比较困难,但另一方面,您可以在 jquery 之前包含基于 jquery 的脚本。
我更喜欢第一种情况。
\n