什么是闭包呢,我们知道局部变量一般是在自己的作用域中才被访问,那么闭包就是一个作用域访问外层函数的局部变量。
也可以这样理解: 本质就是上级作用域内变量的生命周期,因为被下级作用域内引用,而没有被释放。就导致上级作用域内的变量,等到下级作用域执行完以后才正常得到释放
例如在定时器中
var a = 0
function foo(){
var b =14
function fo(){
console.log(a, b) }
fo()
}
foo()
// 0 ,14
这里的子函数 fo 内存就存在外部作用域的引用 a, b,所以这就会产生闭包