什么是闭包

定义:如果一个函数用到了外部的变量,那么这个函数加这个外部的变量就叫做闭包
示例:

  1. let a = 1
  2. function f1(){
  3. console.log(a)
  4. }
  5. f1() // 1
  1. const createAdd = ()=>{
  2. let n = 0
  3. return ()=>{
  4. n += 1
  5. console.log(n)
  6. }
  7. }
  8. const add = createAdd()
  9. add() // 1
  10. add() // 2
  • 上面代码中,函数f1里面并没有定义a,但是结果打印出了1
  • 也就是说函数f1用到了外面的变量a,那么这个函数加这个函数外部变量就叫做闭包

    闭包的用途

    1.延长变量的生命周期
    2.函数作用域,保护里面的变量不受外界干扰
    3.函数可以调用外面的变量

    闭包的缺点:

    常驻内存,增加内存使用量(所以不能滥用闭包,否则会造成网页的性能问题),在IE中可能导致内存泄露(这是IE的bug)
    解决方法:在退出函数之前,将不使用的局部变量全部删除。