1.如何产生闭包
      *当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时,就产生了闭包。
2.闭包的作用
      *是函数内部的变量在函数执行完后,仍然存活在内存中,延长了局部变量的生命周期。
      *让函数外部的可以操作到函数内部的数据(变量、函数)
3.闭包的生命周期
      
 function fn1() {
              //闭包产生,(函数提升,内部函数对象已经创建了)
        var a = 1
        function fn2() {
            a++
            console.log(a)
        }
        return fn2
    }
    var f = fn1()
    f() //2
    f()  //3
    f=null//闭包销毁
4.闭包的缺点
       *函数执行完后,函数内的局部变量没有释放,占用内存时间变长
       *容易造成内存泄露
解决:能不用就不用,及时释放