1.(function($){…})(jQuery)
- #### 原理:
实际上等同于
var fun = function(params){....};
fun(jQuery);
function( )...是定义的==匿名函数==,形参为 (之所以将参数声明为$是为了不与其他库冲突);为了调用该函数则在该匿名函数的后面添上了括号和实参(这里为jQuery);但又由于操作符的优先级,函数本身也需要用括号,所以又为匿名函数添加了括号。
- #### 特点
- 用于存放开发插件的代码,执行其中代码时DOM不一定存在
- 这种写法可以形成闭包。在(function($) {…})(jQuery)在内部定义的函数和变量只能在此范围内有效。
形成是否函数函数、私有变量的概念。比如:
var i=3;
function init(){
alert("外层init:"+i);
}
(function($) {
var i=2;//内部变量
function init(){ //内部函数
alert("内层init:"+i);
}
init();
})(jQuery);
init();
执行结果:
内层init:2
外层init:3
- #### 执行时间
(function( )...)(jQuery)是随着页面自上而下来执行的。即定义后立即执行,执行优先于 (function(){…})。
2.$(function(){…})
原理:
实际上是 $(document).ready(function(){…}) 的缩写。
特点:
用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。
- #### 执行时间:
$(function(){…}) 实际是在网页DOM加载完毕后执行