为什么要像这样编写代码Jquery

为什么要像这样编写代码Jquery?

(function ($) { $(function () { ....... }); })(jQuery); 

这称为闭包,以避免与使用$其他库冲突。 这样,您可以确保在将该jQuery作为参数传递时使用该函数中的$

 (function ($) { $(function () { ....... }); })(jQuery); //<----passing jquery to avoid any conflict with other libraries. 

来自文档:

将jQuery传递给IIFE(立即调用的函数表达式)是一种最佳实践,它将映射到美元符号,因此它不能被执行范围内的另一个库覆盖。

这通常用于编写插件。 在这里阅读更多

  • $(document).ready(function(){ ... }); $(function(){...});

    这指定了DOM完全加载时执行的函数。 传递给.ready()的处理程序保证在DOM准备好后执行,因此这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。 使用依赖于CSS样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素很重要。 阅读更多

  • (function(){ ... })();

    这是一个在浏览器解释你的ecma-/javascript时尽快调用自己的函数。 因此,您不太可能在此处成功处理DOM elements 。 它将在Javascript中遇到它时立即执行。

阅读更多

类似问题

类似问题2

您的代码说明

 (function ($) { <-- $ is just an alias for jQuery $(function () { ....... <--- Here you can use the $ without an issue. }); })(jQuery); <--- This is done usually to avoid conflicts. Passing jQuery object here 

如果你看一下jQuery核心。 它说

 // Expose jQuery to the global object window.jQuery = window.$ = jQuery; 

阅读更多

jQuery.noConflict()

 (function ($) { // })(jQuery); 

这种类型的模块模式在那里非常常用。 它调用自身传递对jQuery的引用,提供对变量的更快访问,因为它现在位于函数的范围内,并且还可以防止全局污染。

第二个:

 $(function () { ....... }); 

加载DOM后运行匿名函数,确保在执行任何代码之前一切准备就绪。

其他一些库也使用$作为变量名,所以为了确保你使用jQuery而不是其他lib var,你会将它传递给一个函数并在该范围内命名为$

 (function ($) { //<--- naming jQuery to $ $(function () {//now we are sure that we are using $ as jQuery ....... }); })(jQuery); //<----passing jquery .