本文将分析(21 , 94) 定义了一些变量和函数 jquery = function(){};
分析的具体部分的源码(1-30) 【因为包含注释可能行号有所误差 (>^ω^<)
/*!
* jQuery JavaScript Library v2.0.3
* http://jquery.com/
*
* Includes Sizzle.js
* http://sizzlejs.com/
*
* Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors
* Released under the MIT license
* http://jquery.org/license
* Downloads By http://www.veryhuo.com
* Date: 2013-07-03T13:30Z
*/
(function( window, undefined ) {
// Can't do this because several apps including ASP.NET trace
// the stack via arguments.caller.callee and Firefox dies if
// you try to trace through "use strict" call chains. (#13335)
// Support: Firefox 18+
//"use strict";
var
// A central reference to the root jQuery(document)
rootjQuery,
// The deferred used on DOM ready
readyList,
// Support: IE9
// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
core_strundefined = typeof undefined,
1./*!
* jQuery JavaScript Library v2.0.3 // 版本号
* http://jquery.com/
*
* Includes Sizzle.js //这是一个具体选择器的实现,可以单独引用这个类库实现选择器的功能
* http://sizzlejs.com/
*
* Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors //以下是版权信息不赘述
* Released under the MIT license
* http://jquery.org/license
* Downloads By http://www.veryhuo.com
* Date: 2013-07-03T13:30Z
*/
2.
//匿名函数自知型
(function( window, undefined ) { //此处引用了两个对象window, undefined ,在这里即使不传window一样可以使用window.xxx 但是基于两点必须传window
1) window总在作用域链的最顶端,若直接在函数体内直接调用window会影响程序效率(即查找速度) 将window设为局部变量可以加快查找速度
2)在压缩版本中 可以将局部window设置为短变量 如e 例:(function(e,undefined)
undefined是因为在IE中 全部变量的undefined会在不同版本浏览器中有不同的表现形式
如
var undefined = 10 ;
在IE9中 undefined对象输出undefined
在低版本ie中则输出10
// Can't do this because several apps including ASP.NET trace
// the stack via arguments.caller.callee and Firefox dies if
// you try to trace through "use strict" call chains. (#13335)
// Support: Firefox 18+
//"use strict"; //如果使用的"use strict"则使用严格模式
例:
"use strict"
a = 10 //相当于定义了全局变量
会报错
例2:
"use strict"
var a = 010 // 8进制数
会报错
var
// A central reference to the root jQuery(document)
rootjQuery, //相当于jQuery的根目录 866行 有这样的代码rootjQuery = jQuery(document); 其实就是用jQuery选择到document元素, 使用一个rootjQuery可以将jQuery(document)压缩成一个字符
// The deferred used on DOM ready
readyList, //和DOM加载有关 挖坑,以后再填
// Support: IE9
// For `typeof xmlNode.method` instead of `xmlNode.method !== undefined`
core_strundefined = typeof undefined, //判断存不存在
//若判断一个字符串a存不存在
//window.a == undefined 和typeof window.a == 'undefined'皆可 但是前者在ie9中存在一个XML判断时的BUG 若用后者则可以完美解决这个问题