闭包

什么是闭包?

函数嵌套函数,内部函数可以引用外部函数的参数和变量,此处的a,b不会被垃圾回收机制回收,因为有相互引用的关系。

 function aa(a){
                let b = 5
                return function(c){
                    console.log(a,b,c)
                }
 }

垃圾回收机制:

 function aaa(){
                var a = 1
            }
 aaa() // 执行之后,函数内的变量a就会被垃圾回收机制所收回

闭包有什么好处?应用在哪里?

  • 希望一个变量长期驻扎在内存中(以上案例说明了)
  • 避免全局变量污染
    垃圾回收机制:调用函数之后就被销毁了,重新调用就不会有之前的计算结果,而是重新执行一次计算。
function aa(){
  var a = 1
  a++
  alert(1)
}
aa() //2
aa() //2

针对以上问题,如何可以做到让变量可以累加?

function aa(){
  var a = 1
  return function(){
    a++
    console.log(a)
  }
}
aa() //2
aa() //3

你可能感兴趣的:(闭包)