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函数之前发生,有时很长时间取决于页面的大小和用户连接的速度。