简单讲,闭包就是指有权访问另一个函数作用域中的变量的函数。
    作用:封装私有变量,使变量始终保留在内存中不会被垃圾回收机制回收
    坏处:不能滥用闭包变量一直没被垃圾回收机制回收可能会内存泄露
    闭包就是能够记住当初所处作用域时候的变量,不管函数在哪里执行,都能够记住当初所处作用域时候的变量,并且会遮蔽新作用域的变量;
    理解闭包的关键在于:外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象,这就是闭包的重要概念。

    1. function fun (){
    2. let a = 10;
    3. return function(){
    4. return a ++;
    5. }
    6. }
    7. var inner = fun()
    8. console.log(inner())// 10
    9. console.log(inner())// 11

    作用场景:防抖,节流