jQuery函数语法差异

如何:

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

$(document).ready(function() jquery中的$(document).ready(function()

我知道ready函数的作用。 它等待HTML加载才开始。 但是, (function($)也这样做?

$(document).ready()的“简写”只是$()

 //both do the same thing $(document).ready(function(){ //run when DOM is ready }); $(function(){ //run when DOM is ready }); 

但是,您的第一个代码与.ready() 。 你有什么是一个立即调用的函数表达式 (IIFE) ,或者在外行的术语中,“立即运行此函数”

 //both are the same (function($) { //run stuff here immediately! })(jQuery) //arguments outside wrapping parenthesis (function($) { //run stuff here immediately! }(jQuery)) //arguments inside wrapping parenthesis 

这就像这个“函数和调用”,但没有函数名(匿名函数)和调用:

 function functionWithNoName($){ //"jQuery" in the call is "$" in here } functionWithNoName(jQuery) 

此方法通常用于保护使用$ for jQuery的代码,而其他库使用相同的$函数名称, 从而防止冲突 。 jQuery只使用$作为jQuery的简写别名(你不想一直输入jQuery('selector')$('selector')更短)

 (function($) { //run jQuery using the "$" safely in here }(jQuery)) //while some other libraries like mootools use "$" out here 

我知道ready函数的作用。 它等待HTML加载才开始。 但是, (function($) { ... })()也这样做?

不,不是的。 它在控件到达该语句时(以及何时)立即执行。

试试跑步

 $(document).ready(function() { alert('happens second'); }); (function($) { alert('happens first'); })(jQuery); 

看到这个第一手资料。

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

这是一个自动执行的匿名函数,只要javascript解释器读取它就会执行块内的代码。

这不要与以下语句混淆,后者等同于jQuery ready:

 $(function() { // code }); $(document).ready(function() { // code }); 

这些jQuery就绪函数只会在DOM完成加载所有元素之后执行(图像在慢速连接上可能需要相当长的时间)。

第一个和最后两个不相等,自执行function将始终在jQuery ready函数之前发生,有时很长时间取决于页面的大小和用户连接的速度。