闭包

作者: 谷子多 | 来源:发表于2018-08-02 01:24 被阅读0次

    什么是闭包?

    函数嵌套函数,内部函数可以引用外部函数的参数和变量,此处的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
    

    相关文章

      网友评论

          本文标题:闭包

          本文链接:https://www.haomeiwen.com/subject/cdwdvftx.html