9-23闭包

1.闭包:实际上是一个函数能访问另一个函数作用域。
2.从堆栈的角度看待问题:
var a = 1;
function fn(){
var b = 1;
function fn1(){
console.log(b)
}
fn1()
}
fn();

当从程序执行的时候,变量a和fn的引用被压入栈底;
当fn 执行的时候,推入fn的执行环境,b和fn1的引用被压入栈;
当fn1执行的时候,推入fn1的执行环境,这里没有定义变量,通过栈底一步一步向上寻找元素 ,结果在fn里查到了变量b。
9-23闭包
当函数访问某个变量通过作用域链来寻找的,而函数的作用域链是通过函数的执行环境栈来决定的。当执行完fn1时,fn和fn1的执行环境才会被销毁。