闭包

41 阅读1分钟
    1. 需要直接 或者间接的 返回一个函数
    1. 内部函数需要访问外部函数的局部变量
  • 好处: 延长变量的生命周期
  • 弊端: 执行空间不会被销毁,如果大量使用会造成内存泄漏
    // function outer() {
    //   let a = 100
    //   let obj = {
    //     name: 'outer函数',
    //     age: '随意'
    //   }
    //   function inner() {
    //     console.log(a) //100
    //     console.log(obj) // {name: 'outer函数', age: '随意'}
    //   }
    //   // 1. 直接返回一个函数
    //   return inner
    // }
    // const newFn = outer()
    // // console.log(newFn) //得到一个函数(inner)
    // newFn()

    function outer() {
      let a = 100
      let obj = {
        name: 'outer函数',
        age: '随意'
      }
      function inner() {
        // console.log(a) //100
        // console.log(obj) // {name: 'outer函数', age: '随意'}
        return a
      }
      // 1. 直接返回一个函数
      return inner
    }
    const newFn = outer()
    // console.log(newFn) //得到一个函数(inner)
    let num = newFn()
    console.log(num) //100