定义:当函数在当前词法作用域之外调用,并可以记住和访问当前词法作用域时,就产生了闭包
举例说明:
function foo(){
var a=2;
function bar(){
console.log(a)
}
return bar
}
var baz=foo()
baz()
为什么会闭包?
通常foo执行之后由于foo不再使用,会被垃圾回收,内部作用域会被销毁。但是,由于bar在作用域外部可以被调用,却声明在foo作用域中,使得该作用域一直存活,以供bar任何时候提供使用。