jquery为什么要用自执行匿名函数封装
日期:2019-04-05
来源:程序思维浏览:2103次
咱们在自己开发封装插件的时候一般都在一个js文件里面直接写程序,然后导入页面使用,这样的写法是不符合规范的,我最近在看jquery、iscroll、swpier等类库时发现他们都是用自执行匿名函数封装了一下,那么到底为什么要这样做呢?下面咱们就来解开神秘的面纱。
使用自执行匿名函数可以避免全局变量污染
(function( window, undefined ) {
})(window)
① 为何传递参数window?
原因一:根据js的作用域链原理:window处于作用域链的顶级,作为参数传递可以加快查找速度,不用一级一级向上查找。
原因二:作为参数传递便于 使用压缩工具压缩代码,否则window是不可压缩。
压缩的jquery源码(参数window被压缩为e):
(function( e, undefined ) {
})(window);
②为何传递参数undefined?
原因:undefined为window的一个属性,在ie7下undefined可以被修改,为了防止被修改,作为参数传入。
注:若是jQuery采用下面的写法则undefined 的传入没有意义。
(function( e, undefined ) {
})(window, undefined);
使用自执行匿名函数可以避免全局变量污染
(function( window, undefined ) {
})(window)
① 为何传递参数window?
原因一:根据js的作用域链原理:window处于作用域链的顶级,作为参数传递可以加快查找速度,不用一级一级向上查找。
原因二:作为参数传递便于 使用压缩工具压缩代码,否则window是不可压缩。
压缩的jquery源码(参数window被压缩为e):
(function( e, undefined ) {
})(window);
②为何传递参数undefined?
原因:undefined为window的一个属性,在ie7下undefined可以被修改,为了防止被修改,作为参数传入。
注:若是jQuery采用下面的写法则undefined 的传入没有意义。
(function( e, undefined ) {
})(window, undefined);
精品好课