浅识js —— 闭包

67 阅读1分钟

js基础知识 —— 闭包

闭包条件?

  1. 需要直接或间接的返回一个函数
  2. 内部函数需要访问外部函数的局部变量

优点?

  • 延长变量的生命周期,在函数外可以使用函数内的变量

缺点?

  • 执行空间不会被销毁,大量使用会造成内存泄露
      function outner () {
          let a = 100
          let obj = {
            name:'潇崇',
            age: 23
          }

          function inner () {
            console.log(a)   //内部函数需要访问外部函数的局部变量
            console.log(obj)
            return a
          }
          // 直接返回一个函数
          return inner  //需要直接或间接的返回一个函数
    }

    const newFn = outner()
    // console.log(newFn)  // 输出函数体 inner
    // newFn()
    let num = newFn()
    console.log(num)