闭包

什么是闭包?

函数嵌套函数,内部函数可以引用外部函数的参数和变量,此处的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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容