1 闭包是定义在函数内部的函数,换句话说,闭包就是可以访问函数内部变量的函数

特点:

  1. 函数嵌套函数,闭包一定有嵌套函数。
    闭包的作用就是需要使用局部变量,延长变量生命周期
  2. 外层函数一定定义局部变量,内层函数要操作这个变量。
  3. 外层函数一定要把内层返回出去,用return
  4. function foo(){
     var num = 0
     return function(){
         num++
         return num
     }
    }
    var fn = foo()
    console.log(fn())

    应用场景之一

    1 通过外部操作函数内部的数值,并对这个数值进行一定的累加操作。
    2 递归也是闭包

    闭包的缺点-- 内存泄漏

    function foo() {
     let num = 0
     return function foo1() {
         return num++
     }
    }
    var f = foo()
    console.log(f());// 第一次调用 0
    console.log(f());// 第二次调用 1
    console.log(f());// 第三次调用 2
    结果:
    0
    1
    2
    上面例子可以看出,每一次调用都是在前面的基础上,说明局部变量num 状态都不会变,一直保存在内存中,这样变量就会占用内存,如果变量比较多,可能会导致内存泄漏,解决办法是,及时把不使用的局部两边删除