博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于闭包的作用,以及优缺点
阅读量:4703 次
发布时间:2019-06-10

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

 定义:闭包 当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的变量,且返回的这个函数在外部被执行         就产生了闭包.闭包是一个环境,具体指的就是外部函数--高阶函数。

        说白了就是一个环境,能够读取其他函数内部的变量。

 本质上,闭包是将函数内部和函数外部连接起来的桥梁。

用处:1.读取函数内部的变量;

           2.这些变量的值始终保持在内存中,不会在外层函数调用后被自动清除。

优点:1:变量长期驻扎在内存中;

           2:避免全局变量的污染;

           3:私有成员的存在 ;

特性:1:函数套函数;

           2:内部函数可以直接使用外部函数的局部变量或参数;

           3:变量或参数不会被垃圾回收机制回收 GC;

缺点:

    常驻内存 会增大内存的使用量 使用不当会造成内存泄露,详解:

(1)由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

(2)闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

转载于:https://www.cnblogs.com/fengrenfan/p/10486844.html

你可能感兴趣的文章
C#:String.Format数字格式化输出
查看>>
ubuntu下安装pdo和pdo_mysql扩展
查看>>
AngularJS 出现 Uncaught Error: [$injector:modulerr] 的解决办法
查看>>
Win32 多线程学习笔记
查看>>
MySQL高级知识系列目录
查看>>
关于配置禅道的邮件发送
查看>>
两列左侧自适应布局--(来自网易)
查看>>
sql中同一个Trigger里同时包含Insert,Update,Delete
查看>>
[转] handsontable的核心方法
查看>>
[LeetCode]Minimum Path Sum
查看>>
[LeetCode]Surrounded Regions
查看>>
json几个小例子
查看>>
NodePort,LoadBalancer还是Ingress?我该如何选择 - kubernetes
查看>>
day 46 htmljianjie
查看>>
hive表信息查询:查看表结构、表操作等
查看>>
关键字_Volatile
查看>>
Android性能优化典范【转】
查看>>
CentOS7查看和关闭防火墙
查看>>
第一次冲刺(3)
查看>>
mybatis_04 resultType和resultMap区别
查看>>