常见使用

 var Zepto_me = (function(){
          var $ = function(){alert(1212)};
          $.isWindow = function(obj){return obj!=null && obj == window};
          return $;
      })();
      window.Zepto_me = Zepto_me;
      window.$ === undefined && (window.$ = Zepto_me);
      $().isWindow(window);

局部变量的累加

function foo(x){
        var a = x;
        return function(){
            alert(a++);
        };
     };
     var f = foo(1);
     f();// 1
     f();// 2

分流的那个函数可以使用原来函数的变量

(function(i){
         var a = i;
         (function(){
            alert(a);
         }());
     }(1));
var name = "the window";
     var object = {

         name : "the object",
         getName : function(){
            name = this.name;
            return function(){//执行这个分流函数的是window对象,所以当前this表示的是window
                return this.name;//the window
                return name;//the object
            }


         }

     } 
     alert(object.getName()());

寻找变量的路径

var a =33;
     function foo(x){
        // var a = x;
        return function(){
            alert(a++);//会先从当前函数域中寻找,在从foo函数域中寻找,在从window中寻找
        };
     };
     var f = foo(1);
     window.f();
     window.f();

常见

 var Zepto_me = (function(){
          function isWindow(obj){ return obj != null && obj == obj.window }
          var $ = function(){};
          $.isWindow = isWindow;//闭包
          return $;//闭包
      })();
      alert(Zepto_me.isWindow(window));//true

总结

闭包就是某个函数在单独执行期间,可以使用一个变量,这个变量是在别的函数体里面定义的。也就是说变量的使用范围扩大了。

clipboard.png


serendipity
106 声望0 粉丝

REST


« 上一篇
怪咖
下一篇 »
变量