jquery源码中涉及了大量原生js中的知识和概念,文章是我在学习两者的过程中进行的整理和总结,有不对的地方欢迎大家指正。
本文使用的jq版本为2.0.3,附上压缩和未压缩版本地址:
http://Ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.js
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js
查看源码可以发现整体结构是这样:
(function( window, undefined ) { // code})( window );
要理解这种写法,需要了解js中定义函数有两种方式:
1.函数声明
function functionName(){ // code}
2.函数表达式
var functionName = function(){ // code}
这种方式定义的函数也叫匿名函数(没有函数名),可以看作是将一个函数表达式赋值给一个变量。
定义好函数后调用它:
functionName();
到这里我们对照源码可以发现,functionName被其对应的值(表达式)替换后,即为:
(function(){})(); //不加括号会报错
? 这句代码的意思就是定义了一个匿名函数并立即执行了它。
再看一个例子帮助理解,在给函数传参的时候
var num = 1;functionName(num);functionName(1);
参数可以传变量或者直接传值(表达式),同理,函数名也可以被替换为其对应的值(函数表达式)。
好了,第一篇就写到这里,有空再继续往下总结。
新闻热点
疑难解答