08.01 闭包

1 function f1(){
2     var a = 1;
3     var b =2;
4 
5     return    function f2(){alert(a);}  
6 }
7 
8 var result = f1();
9 result();  // 1

 

 

1、函数不返回时已经产生闭包。

2、初始化 lexcialEnov的时候,已经产生闭包。  // 静态作用域建立时候,已经初始化了。

3、闭包的本质就是作用域链。sub{[scope]} -> main {[scope]}

 

 

 

/// instance:  闭包的应用。

 

  (function(){
    var m = 0;
    function getM(){
      return m;
    }
    function setM(val){
      m = val;
    }
    window.gM = getM;
    window.sM = setM;
  })()

  sM(10);
  alert(gM());

 

posted @ 2016-08-01 15:29  Tachi  阅读(159)  评论(0编辑  收藏  举报