1、如何产生闭包
嵌套在内部的(子)函数,引用了外部的(父)函数的变量或函数时,就产生了闭包。
function fn1(){
var a = 2
var b = 'abc'
function fn2(){
console.log(a)
}
}
1. fn2嵌套在fn1中,并且fn2中引用了fn1中的a变量,所以fn2形成了闭包
2. fn2中没有引用b变量,所以fn2形成的闭包中没有b
3. 执行函数定义就会产生闭包,不是必须调用内部函数才产生
2、闭包的作用
1)使用函数内部的变量在函数执行完后,依然存活在内存中(延长了局部变量的生命周期)
2)让函数外部可以操作到函数内部的数据(变量和函数)