原创:jquery框架分析第一章: 第一个匿名函数
作者 斯人 | 发布于 2012 年 1 月 5 日

我的jquery版本为1.7*
这个版本代码比之前的版本优化了很多..结构也清晰了不少.就用最新的把
用vim打开jquery(什么编辑器都行,我用习惯了VIM)
首先你能看到所有代码被一个

(function(window,undefined){

})(window)

这是个什么东西..
首先 这是一个匿名函数(不懂?那就先去谷歌下吧)
其次,这是一个自调用匿名函数
这段代码做了三件事
第一件:创建一个只给jquery用的空间,我们估且就叫 “私有空间”,与C++的命名空间很相似,
为了保证jquery不与其他js框架冲突..如果是一个js框架,为了通用性,必须要有自己的命名空间!
第二件:传入一个window变量,
本来window是一个全局变量,但是这里把它传给jq框架,这个时候window在JQ框架里就变成局部变量了,
为什么?一切为了速度.当window变成局域变量之后,在JQ框架里面调用window变量,它的作用连就不用
再回到顶层作用于.
注意:传到JQ的window对象并不是一个拷贝..而是可以认为是一个指针,他们指向同一段内存地址
如下面的代码

window.a='this is in window';
(function(window,undefined){
    window.a='this is in jq';
    setTimeout(function(){
        alert(window.c);    //输出 this is c
    },1000)
})(window)
window.c='this is c';
console.log(window.a)   //输出 this is in jq;

第三件:传入undefined变量,为啥..
我也不太确定,查了下资料,说是为了保证jq空间内undefined为真的未定义.因为undefined可以被赋值变成
一个局部变量

如:
undefined="this is siren";
alert(undefine);

这段代码 除了在FireFox里不能变,其他浏览器unefined都变成已定义了.

下一章,我们就要从JQ源码里,由上往下一点点分析了

原文出处:http://www.imsiren.com/archives/97