js闭包理解

闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。
形式上
function outer(){
   var var1;
   var var2;

   function inner(){
        访问var1
        访问 var2
}
   
   return inner;
}

案例
function outer(){
    var outerVar = "10";
            
    function inner(){
        console.log(outerVar);
    }
    return inner;
}
        
var t1 = outer();
t1();

outer()执行完成后并不释放自己的函数执行堆栈,原因:outer函数内部返回了一个函数inner,此时js解析引擎为了给inner函数保留执行环境,不会释放outer的执行堆栈。
直到inner函数执行完成后,一起释放outer和inner执行堆栈。

 

posted @ 2019-06-04 15:22  就这样子吧  阅读(176)  评论(0编辑  收藏  举报