闭包就是能够读取其他函数内部变量的函数。例如在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执行堆栈。
原文:https://www.cnblogs.com/wwthuanyu/p/10973789.html