jQuery源码剖析系列之自挪用匿名函数

自挪用匿名函数

翻开jQuery源码,起首你会看到如许的代码构造:

(function(window,undefined){

    //jquery code

})(window);

这是一个自挪用匿名函数。在第一个括号内,建立一个匿名函数;第二个括号内,马上实行

运用自挪用匿名函数的缘由

经由过程定义一个匿名函数,建立了一个“私有”的定名空间,该定名空间的变量和要领,不会损坏全局的定名空间。这点异常有效也是一个js框架必需支撑的功用,jQuery被应用在不计其数的JavaSctipt顺序中,必需确保jQuery建立的变量不能和导入他的顺序所运用的变量发生冲突

传入参数window的缘由

传入window:由于实行js代码是从里到外的,经由过程传入window变量,使得window由全局变量变成部分变量,当在jQuery代码块中接见window时,不需要将作用域链回退到顶层作用域,如许能够更快的接见window;更主要的是,将window作为参数传入,能够在紧缩代码时举行优化,比方jQuery-1.6.1.min.js: (function(a,b){})(window);//window被优化为a

传入undefined的缘由:

(1)Javascript 中的 undefined 并非作为关键字,因而能够许可用户对其赋值,比方IE8:


    var undefined = 'change'
    ;(function(window) {
          alert(undefined);//IE8 'change'
    })(window)
    

(2)行参undefined是部分的,所以就算在外部定义了undefined,内里的undefine依旧不受影响。如许子最大水平防备外界的变量定义对内部形成影响

    原文作者:Change
    原文地址: https://segmentfault.com/a/1190000009028547
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞