闭包

72 阅读1分钟

函数嵌套函数,内部函数就是闭包

正常情况下,函数执行完成,内部变量会销毁(释放内存空间)

内部函数没有执行完成,外部函数变量不会被销毁

闭包应用:(封装)

   let a = 10
   let b = 20
      function add() {
        return a + b
      }
      function sub() {
        return a - b
      }
   let result1 = add()
   let result2 = sub()
      console.log(result1, result2)

如上代码,定义了很多全局变量,在项目协同开发的时候,大家都定义全局变量,容易造成冲突,此时我们需要用闭包把这些代码给封装起来

我们可以定义一个模块module,把声明的变量放入module中,利用闭包实现了一个模块化的功能

      let module = (function () {
        let a = 10
        let b = 20
        function add() {
          return a + b
        }
        function sub() {
          return a - b
        }
        return {
          add,
          sub,
        }
      })()

      let result1 = module.add()
      let result2 = module.sub()
      console.log(result1, result2)