博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
闭包的利理解
阅读量:7081 次
发布时间:2019-06-28

本文共 1388 字,大约阅读时间需要 4 分钟。

简单的说 就是通过  内部函数 可以返回  内部的局部变量  关于 闭包的释放  以后再 深究吧!

http://www.cnblogs.com/xing901022/p/4282503.html

说到 闭包 ,这是js不得不提的一个特性,很多传统语言都不具备这样的特性,比如JAVA C等等。

之前看书的时候,总是理解不好什么是闭包!下面就通过手绘一张原理图,来理解一下:

  首先基本上所有的编程语言都有类似的特性,局部方法可以访问外部父类方法的属性,也就是说,子类或子方法可以访问父类的资源。

var num = 11; function func1(){ console.log(num); } func1();

  因此上面的这段代码,我们可以获取到num的值。

 

  父类能否获取到子方法内部的值呢?

function func2(){            var num1 = 22;            num2 = 33;        }        func2();        
console.log(num2);

  当然是不可以的,因为子方法的变量作用域仅仅是子方法的范围,外部是无法获取到的。

  

  那么如何才能在外部获取到子方法的局部变量呢!

  如果是java,一个类的私有属性,可以通过公共的get方法来获取,比如:

class Person{  private String name;  public String getName(){    return name;    }    }

  通过上面的方式可以获取到一个类内部的私有属性,同样的,在js中可以通过某个方法来获取这个方法的局部变量,然后通过这个方法内的方法来读取想要的变量值。

function func3(){            var num3 = 44;            function func4(){                return num3;            }            return func4;        }        var func = func3();        console.log(func());

  参考下面的图解:

  在外部无法获取到func3内部的局部变量,但是func3内部的局部方法func4却可以获取到,因此 返回一个func4的引用 ,这样在外部通过这个func4就可以获取到func3的内部变量。

  虽然是绕了一个圈子,但是在方法外部却通过这样一个手段获取到了内部的值。

  而这个方法内的局部方法func4就叫做闭包,按照很多书上的概念,这个方法搭建了方法内部与方法外部的桥梁,使得在外部也可以任意的获取到方法内部的资源。

  但是闭包会造成变量在内存中持久占用,因此会有一定的性能问题,最好不要轻易使用,即便使用也要在恰当的实际进行释放。

 

  示例的源码:

                        

  运行结果:

转载于:https://www.cnblogs.com/eat-too-much/p/6015003.html

你可能感兴趣的文章
Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了
查看>>
<Linux性能调优指南>主要思路流程
查看>>
让天下没有难做的研发效能,云效金牌合作伙伴亮相云栖大会
查看>>
C语言实现一个列表式的学生信息管理系统(完善)
查看>>
从拒绝到拥抱 企业经历云安全的六个阶段
查看>>
对话华途“少帅” 深耕数据安全市场
查看>>
IDC:商业分析服务加速行业布局 与大数据结合紧密
查看>>
《数学与泛型编程:高效编程的奥秘》一第3章 古希腊的数论
查看>>
新西兰发明新型传感器,电子产品不再需要充电器
查看>>
IDC:2017年竞争和工作负载变革将改变供应链生态系统
查看>>
万国数据:“为了全方位保障混合云数据中心的安全,我们连猫都养了十只。”...
查看>>
移动金融2.0时代来临 “业务优化 +”平台成为趋势
查看>>
ssh使用无密码登陆
查看>>
Fairware勒索软件频繁攻击Linux服务器 大家赶紧做好备份
查看>>
亿联视频会议云管理服务平台震撼上市
查看>>
英特尔专家揭秘内部高效数据中心计划
查看>>
NSA DanderSpiritz测试指南——木马生成与测试
查看>>
F5公司:“双十一”式的DDOS,你准备好了么?
查看>>
华硕设立5000万美元风投基金:为硅谷初创企业提供全方位支持
查看>>
“云计算”和“大数据”成为中国公民科学素质基准
查看>>