先给出JQuery源码的第一句:(我们就分析这一句源码)
(function( window, undefined ) {
})(window);
这一段源码主要有3个问题需要解答:
1、(function(){})() 这是干嘛?
第一个括号包含的内容表示一个函数表达式,最后一个括号表示立即执行,并传入参数,整体就是一个“立即执行的匿名函数表达式”。
2、为什么要将全局window当作参数传递进去?
这一点跟变量的作用域有关,因为变量的搜索是按照从里向外搜寻,因此将全局变量当成函数局部变量可以加快变量的搜寻速度。
3、为什么执行时不带第二个参数:undefined?
在IE和一些其他的浏览器的低版本中,undefined是可以被重新赋值的,如:undefined = 9; 这样会破坏掉JQuery内部undefined的含义,因此这里不传递第二个参数是使外部的undefined无法进入JQuery内部,达到安全的目的。
总结:
看看大师级的代码真能学到许多东西。