好程序员技术分享浅谈JavaScript中的闭包

  

  <强>               JavaScript                        ,               

  

        <强>         <强>      

  

           “闭包是指有权访问另一个函数作用域中的变量的函数”,如果用下定义的观点看,这句话就是说“闭包是函数”,我带着怀疑的心态又去网上找了找,发现什么说法都有,终究没能明白闭包的含义,还是看代码来得直接。                  

  

        

  

                 

  

           

  

           

  

     

  

     

  

           

  

           

  

        

  

     出函数的返回值是一个函数,即inner.inner在出内部,理所当然能访问到局部变量的天空,但当内部作为出的返回值赋给了外的全局变量时,神奇的事情发生了:在全局作用域中访问到了天空,这就是闭包。      

  

        <强>      ?         <强>      

  

     (存储环境中定义的变量及函数)加入作用域链中,一旦函数执行完,栈将其环境弹出,活动对象被销毁。      

  

     从执行完之后将返回内给结果了,出的执行环境从环境栈弹出,控制权交给全局环境,出来的活动对象理应被销毁。但此时内心已经存储在全局活动对象中了,同时内心的需要访问天空,所以出来的活动对象没有被销毁,即使结果执行完毕,出来的活动对象依然存在于作用域链中,只有当结果被销毁      

  

           

  

     

  

        <强>      ?         <强>      

  

     ,         

  

        <强>      警告         <强>      

  

        

  

        

  

        这指的是窗口对象。      

  

  
  

好程序员技术分享浅谈JavaScript中的闭包