jQuery源码 21,94 逐行解析

注释:

jQuery源码 21,94 逐行解析_第1张图片

jQuery源码 21,94 逐行解析_第2张图片
查看检索索引:(#13335)
https://bugs.jquery.com/ticke...


为什么传参window?
(function(){})(window)
//why? 为什么要传入window
(function(){
window //不利于压缩
})()
//找最顶层window速度慢
这是为了优化速度,我们知道变量是在一层一层的作用域往上找,找里它最近的开始查找,这里是 作用域链原理,如果找不到就一层一层往外找,所以你传参了之后,找的是传入的参数window
(function(e){
e //利于压缩
})(window)
//参数跟局部变量其实是一样的,查找速度更快
1.查找速度快
2.压缩代码时有用

jQuery源码 21,94 逐行解析_第3张图片

为什么传参undefined?
因为这个其实是window下的一个 属性可以被 修改;怎么理解?
在ie10下undefined就是undefined
但是在老版本下undefined就是修改后的值
var undefined =10;
alert(undefined)
//ie 10 => undefined
//ie 7,8 => 10



注释:
//"use strict";
什么是严格模式?
jQuery源码 21,94 逐行解析_第4张图片
jQuery源码 21,94 逐行解析_第5张图片
a=10;
//=>输出不报错

jQuery源码 21,94 逐行解析_第6张图片

"use strict"
a = 10;
alert(a)
//=>Uncaught ReferenceError: a is not defined
有利于规范我们的写法,在一些特殊情况下服务器使用.net会出现跟踪有问题;火狐在老的版本会出现假死状态
不支持使用


1. rootjQuery jQuery根目录
== jQuery(document) [886]
压缩优化,赋值后rootjQuery可以变成一个字符; 可维护
var a;
a=a+100;
//这个100是什么?
//如果100定义成变量
var speed=100;
a=a+speed; //这个变量是速度,可维护
2. readyList:用于DOM加载
3. core_strundefined = typeof undefined, :typeof undefined=="undefined" 得到 字符串形式的undefined
window.a==undefined //1
window.a==typeof undefined //兼容性考虑xml

jQuery源码 21,94 逐行解析_第7张图片

在老版本oldIE情况下678,如果判断xmlnode节点方法或者属性的时候,它可能判断不出来如果用第一种,它会认为证据不足
最好使用typeof xx进行判断
jQuery源码 21,94 逐行解析_第8张图片

你可能感兴趣的:(jquery,源码分析,源码学习)