本文主要是理解归纳$(function(){})与(function($){})(jQuery)的区别以及使用。
$(function(){})
$(function(){})写法与以下几种相同:
$(function(){
//简写版...
});
$(document).ready(function(){
//...
});
(function($){})(jQuery)
理解
可以理解为立即执行匿名函数(function(){})(),其中传递jQuery对象。
(function($){…})(jQuery),是形参使用$(主要是为了不与其他库冲突);而实参用jQuery。
(function($){
//...
})(jQuery);
var fn = function($){
//...
};
fn(jQuery);
function fn($){
//...
};
fn(jQuery);
作用
作用:形成闭包。
在(function($){…})(jQuery)内定义的函数和变量只能在此范围内有效。
使用
执行顺序
在以下几个都出现在js中时,执行先后顺序如下:
- (function($){})(jQuery) //最先
- $(function(){});
- window.onload=function(){};
- $(window).load(function(){});
详细顺序请查阅另一篇相关文章 JQuery的ready、JS的load、JQuery的load使用区别
开发插件应用
$(function(){});用于存放操作DOM对象的代码,执行代码时DOM对象已经存在,所以不能用于存放开发插件的代码。主要因为Jquery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法函数。
(function($){…})(jQuery);可用于存放开发插件的代码。其执行时DOM不一定存在,使用时要注意。