js高级-闭包

              js高级-闭包

  闭包到底是什么,在理解这个问题之前,我们先来了解一下,闭包是如何产生的,了解完闭包的产生才能对闭包有一个更好的理解

    闭包的产生条件有三个:

      1. 函数嵌套

      2. 内嵌套函数调用了其外层嵌套函数的数据(变量/方法)

      3. 执行外层嵌套函数

    闭包是由外层嵌套函数执行,当其内部嵌套函数引用了外层嵌套函数的数据,闭包就产生了

  

// 1.编写一个嵌套函数
    function fun1() {
      var a =10;
      function fun2(){
        console.log(a);// 2.内部嵌套函数引用了外层嵌套函数的数据
      }
    }
    //3.执行外层函数==>产生闭包  注意:闭包是存在于内嵌套函数中
    fun1();
    //4.函数执行完毕,包含闭包的函数对象成为垃圾对象.闭包消失(死亡)

  闭包的生命周期: 编写一个嵌套函数==>内嵌套函数引用了外嵌套函数的数据==>执行外层函数==>函数提升,执行函数定义==> 产生闭包==>外层函数执行完毕==>包含闭包的函数对象成为垃圾对象==>闭包死亡(消失)

   闭包导航是什么?    在我的理解里,闭包是一个对象,一个用于存储被内嵌套函数引用数据的对象,当然这只是我的观点.很大一部分人认为,闭包是嵌套的内部函数

              21:02:54

posted @ 2020-06-22 21:03  不问心  阅读(127)  评论(0编辑  收藏  举报