zoukankan      html  css  js  c++  java
  • 222前端--- 闭包的理解总结

    一  概念区分

         当看到function函数里面嵌套function函数 就是闭包。

    二   应用场景

          1  先说正常的不同的function函数之间可以调用函数本身 例如

          function a(){  let name='sw'; console.log(name); }    function b(){ a(); }    2个函数是平级定义,但是无法访问函数内部的变量name

          2  闭包就是,当想访问函数内部的变量时或想把函数内部的变量抛到外面 ,就需要用闭包的写法(一些函数里面接收函数function参数并在内部执行)。

    三   特别注意

           1   闭包虽然写法,是在主函数function内部定义闭包function函数,但是执行调用的时候还是在外面调用 (必须把闭包return 才能调用执行)。

                例如: function a(){ let name='sw';  return function b(){ return name; }  }     let result=a();     console.log(result.b());

                           ----拿到了函数内部的变量name结果 ' sw'.

           2   闭包由于执行调用都是在外面单独进行,所以类似平级定义的2个function a ,b  

                故闭包里面如果使用this. 访问变量都是调用的函数外部的变量, 函数里面的变量调用不需要通过this 来调用。

                或者把外层函数 let that=this 赋值,然后通过that 访问外层作用域私有变量。

            3  闭包引用变量后会把变量存储在内存中,直到使用完毕。所以注意及时清理,避免消耗内存。

            4   如果把父函数当做对象使用,把闭包当做公用方法,把内部变量当做私有属性,此时不要随便改变父函数内部变量的值/直接使用

    四    具体说明

    1 函数套函数主函数a , 里面的函数b是闭包 ,可以访问主函数中的变量 2 访问函数内部的变量 (虽然 闭包函数在主函数里面,但是闭包函数执行效果的时候 ,必须return出去 ,在外部执行 也就是说 在内部定义,但实际还是一个外部函数!!!)

    3 一个函数想访问另外一个函数的内部变量,就是用闭包 。 但是闭包没有this对象, 可以用主函数的 var that= this ,闭包里面还可以调用主函数 a() 因为闭包就是一个外部函数 比如分开调用的时候 就是 a() , b() ,可以互相调用的! 4 闭包里面使用变量会在内存中,记得释放 否则影响性能

    五    经典例子

         

    产品思维的PM程序员~
    工作1-3年,基础知识,多看书。多跟着别人做项目,学习经验。 工作3-5年,新知识,高级知识,自己独立做项目,总结经验。尝试不同的语言。 工作5-8年,工作职位,要从设计,管理方面要求自己,可以尝试走管理路线(项目经理或cto)。 工作10年及以上, 自己做些项目,产品,尝试为创业做准备。 上大学和不上大学区别很大,上品牌大学和普通大学区别也很大,后天的努力最大。 ---无论它是在遥远的远方,还是在出发的地方、哪里有希望哪里就是我们的方向;终点、只不过是梦想起飞的地方。
    Top
    收藏
    关注
    评论
  • 相关阅读:
    iOS开发UI篇—简单介绍静态单元格的使用
    iOS开发UI篇—UITableview控件使用小结
    iOS开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
    iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
    iOS开发UI篇—实现UItableview控件数据刷新
    iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
    iOS开发UI篇—UITableviewcell的性能问题
    iOS开发UI篇—UITableview控件基本使用
    iOS开发UI篇—UITableview控件简单介绍
    A1055. The World's Richest
  • 原文地址:https://www.cnblogs.com/softwarelanguagebs/p/14422452.html
Copyright © 2011-2022 走看看