码迷,mamicode.com
首页 > Windows程序 > 详细

关于jQuery源码中(function(window,undefined){//dosomething()})(window)写法解释

时间:2014-10-29 14:22:51      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   ar   使用   sp   div   

  一、首先是最常见的闭包 (Closure) 范式自执行函数的写法,这里用匿名函数封装(构造块级作用域),避免了匿名函数内部的代码与外部之间发生冲突(如使用了相同的变量名).

 

 1 (function() {// ...})(); 

 

  二、自执行函数和其他函数类似,都可以传入参数:jQuery源码中将window作为一个参数传入, window是DOM对象模型的最顶层对象,把全局变量传进来,就避免了到外层去寻找,提高效率:

 

 1 (function(window) {// ...})(window); 

 

当然你也可以写成这样去压缩代码,在自执行函数里面就可以通过win去访问window全局对象了

 

 1 (function(win) {// ...})(window); 

 

  三、最重要的是undefined参数,将undefined(未定义)作为一个的参数传入,防止undefined在外围被定义(占用)(undefined非关键字)。还有undefined在老一辈的浏览器是不被支持的,直接使用会报错,考虑兼容性,因此增加一个形参undefined。不要用window.undefined传递给形参,window.undefined有可能被其他人修改了,最好就是甚么都不传,形参的undefined就是真正的undefined。

 1 var undefined=myValue;
 2 (function(window){ 
 3   alert(window.undefined); //myValue
 4   alert(undefined); //myValue
 5 })(window);
 6 
 7 var undefined=myValue;
 8 (function(window,undefined){ 
 9   alert(window.undefined); //myValue
10   alert(undefined); //此处undefined参数为局部的名称为undefined变量,值为undefined
11 })(window);

  所以后者,就算外面的人把 undefined 定义了,里面的 undefined 依然不受影响。

关于jQuery源码中(function(window,undefined){//dosomething()})(window)写法解释

标签:style   blog   io   color   os   ar   使用   sp   div   

原文地址:http://www.cnblogs.com/cdwp8/p/4059256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!