先基本代码
(function(window,undefined){
var jQuery = ........
//.......
})();
window.jQuery = window.$ = jQuery;
})(window);
1、为什么要创建自调用函数?
通过创建自调用匿名函数,创建一个特殊的函数作用域,该作用域中的代码不会和已有的同名函数、方法和变量以及第三方库冲突
2、自调用函数的几种写法
写法1
(function(){
//.......
})();
写法2
(function(){
//........
}());
写法3
!function(){
//........
}();
3、为什么要为自调用匿名函数设置参数window,并传入window对象?
通过传入window对象,可以使window对象变为局部变量(即把函数参数作为局部变量使用),这样当在jQuery代码块中访问widow对象时,不需要将作用域链回退到顶层作用域,从而可以更快的访问window对象,这是原因之一;另外,将window对象作为参数传入,可以在压缩代码时进行优化。
4、为什么要为自调用匿名函数设置参数undefined?
特殊值undefined是window对象的一个属性,例如,执行下面的代码将会弹出true:
alert("undefined" in window); //true
通过把参数undefined作为局部变量使用,但是又不传入任何值,可以缩短查找undefined时的作用域链。
另外,更重要的原因是,通过这种方式可以确保参数undefined的值是undefined,因为undefined有可能会被重写为新的值。
5、自调用匿名函数最后的分号(;)
1、在下面的代码中,如果自调用匿名函数的前一行末尾没有加分号,则自调用匿名函数的第一对括号会被当作是函数调用
var n = 1
(function(){})()
2、在下面的代码中,如果未在第一个自调用匿名函数的末尾加分号,则下一行自调用匿名函数的第一对括号会被当作是函数调用
( function(){} )()
( function(){} )()
( function(){} )()