zoukankan      html  css  js  c++  java
  • js高级-闭包

                  js高级-闭包

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

        闭包的产生条件有三个:

          1. 函数嵌套

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

          3. 执行外层嵌套函数

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

      

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

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

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

                  21:02:54

  • 相关阅读:
    Sublime text 3支持utf-8
    ubuntu17.10 安装firefox的flash
    opencv mat裁剪
    Ubuntu寻找某某库
    Ubuntu的 g++ gcc版本升降级
    Autotools知识点
    Counted(内存管理机制)
    operator new和operator delete
    STL学习笔记:空间配置器allocator
    function call操作符(operator()) 仿函数(functor)
  • 原文地址:https://www.cnblogs.com/buwenxin/p/13179121.html
Copyright © 2011-2022 走看看