闭包的应用

 闭包的应用

 

闭包是ECMAScript最强大的特性之一。所谓“闭包”,是指在一个函数的执行过程中返回另一个函数对象。如:
function testClosure()
{
        //private
    var a="private";

    function getValue()
    {
            //引用testClosure的变量
        alert( a );
    }
        //返回对内部函数的引用
    return getValue;
}
var getV = testClosure();
getV();
在阐述闭包执行调用的过程之前,我们需要了解一下JavaScript的垃圾自动回收机制。
ECMA262规范要求遵循本规范的语言均要设计垃圾自动回收机制,但是规范中并没有详细说明相关的细节,而具体的回收方式留给语言自身来决定。尽管不同的引擎实现的方式和侧重点不同,但大致的思想都是相同的,即如果对象不再“可引用(由于不存在对它的引用,使执行代码无法再访问到它)”时,该对象就成为垃圾回收的目标。因而,在将来的某个时刻(不确定何时)会将这个对象销毁并将它所占用的一切资源释放,以便操作系统重新利用。类似于C语言的堆栈管理,在JavaScript中,当正常退出一个执行环境时就满足类似的条件。此时,作用域链结构中的活动对象及在该执行环境中创建的任何对象(包括函数对象),都不再“可引用”,因此将成为垃圾回收的目标。
上例中,由于getV变量引用了testClosure方法返回的内部getValue方法,因此testClosure执行环境中的变量,以及所创建的Function对象等都不会被垃圾回收,仍然可以通过所引用的变量访问到testClosure方法所定义的内部全局变量。

转载于:https://www.cnblogs.com/myjavait/archive/2009/03/13/2142584.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能将为传统制造业带来什么?

来源 :数据科学与人工智能“物理世界”(以制造业设备所代表)和“数字世界”(由人工智能、传感器等技术代表)的碰撞催生了制造业的巨大的转变。两个世界的融合将为下一轮经济发展注入新的动能。以人工智能为代表的新技术…

解决JPA的枚举局限性

对于数据字典型字段,java的枚举比起Integer好处多多,比如 1、限定值,只能赋值枚举的那几个实例,不能像Integer随便输,保存和查询的时候特别有用 2、含义明确,使用时不需要去查数据字典 3、显示值跟存储值…

网络模拟器 eNSP、EVE-NG、GNS3、Packet Tracert

工欲善其事必先利其器,学习网络不可能都有真实的网络环境可以使用,这时就需要使用网络模拟软件,模拟一些网络环境,构建一些网络拓扑,然后学习研究网络技术 初学时不要在模拟器的选择上纠结,PT、GNS3 就足够…

linux 升级java_linux 升级jdk1.8

1、首先根据实际情况准备好包 jdk-8u45-linux-x64.rpm2、先不管是否已安装JDK1.6还是JDK1.7,先下载 jdk-8u45-linux-x64.rpm 然后上传到 /usr/local/src 去。当然其他目录也可以。这里是默认位置。3、给所有用户添加可执行权限#chmod x jdk-8u45-linux-x64.rpm都给…

第四讲 构建安全的Microsoft ASP.NET 应用的最佳实践和技术

*ASP.NET应用安全事项 *输入验证 1、参数化查询 2、存储过程 3、html编码(防止javascript脚本执行) String.Format("Invalid Logon for {0},please try again!",Server.HtmlEncode(UserName)); 认证与授权 配置管理 Review production configuration: <customErro…

信息技术守护人类文明DNA

来源&#xff1a;中国青年报 作者&#xff1a;胡春艳21世纪最时髦的技术&#xff0c;改变的不仅是未来&#xff0c;在被称为“最古老的研究”的文物与博物馆界&#xff0c;感受到的变化可能更加显著。天津大学文化遗产保护与传承信息技术研究中心主任张加万团队历时10年&…

如何给正面的负反馈

麦肯锡的一个方法论&#xff0c;就是如何给正面的负反馈。 如果你想给别人提意见的时候&#xff0c;用什么样的方法最有建设性&#xff1f; &#xff08;1&#xff09;我观察到你说了什么话&#xff0c;做了什么事&#xff1a;一、二、三、四…… &#xff08;2&#xff0…

java 单例方法_Java-单例模式 - 惊觉

单例模式单例(Singleton)模式是设计模式之一&#xff0c;最显著的特点就是一个类在一个JVM中只有一个实例&#xff0c;避免繁琐的创建销毁实例。简单例子先看简单的单例模式实现完整代码&#xff1a;Singleton_Test类使用单例模式 &#xff0c;采用饿汉式方法。public class Si…

DIY协同办公平台(C/S)系列4之通讯录篇

通讯录分为企业通讯录和员工个人通讯录。企业通讯录与企业员工资料相连接&#xff0c;读取其资料。而员工个人通讯录主要是员工的自己业务往来和个人的通讯资料保存。 1.主体toolbar 用于快捷掉出与员工相关的功能&#xff0c;打算支持自定义和本地化&#xff0c;通过对文本的…

iRank: 基于互联网类脑架构的阿尔法鹰眼发展趋势评估

前言&#xff1a;iRank是人工智能学家基于科学院研究团队“互联网类脑智能巨系统架构”和”AI 智商评估模型”等研究成果&#xff0c;对智能产业优秀企业、产品和技术进行评估、发掘和推荐的项目。iRank目前拥有互联网、人工智能、机器人&#xff0c;大数据、通讯技术、芯片、脑…

Java加密与解密的艺术~AES-GCM-NoPadding实现

来源&#xff1a;Java AES加密和解密_一名可爱的技术搬运工-CSDN博客 高级加密标准 &#xff08;AES&#xff0c;Rijndael&#xff09;是一种分组密码加密和解密算法&#xff0c;是全球使用最广泛的加密算法。 AES使用128、192或256位的密钥来处理128位的块。 本文向您展示了一…

STL bitset用法总结

c bitset类用法&#xff1a;http://blog.csdn.net/qll125596718/article/details/6901935 C 参考&#xff1a;http://www.cplusplus.com/reference/bitset/bitset/ http://happyboy200032.blog.163.com/blog/static/46903113201291252033712/ http://blog.csdn.net/e68948…

ASP.NET数据库编程入门

因为Access并不真正为高性能应用程序服务&#xff0c;所以一个希望有多个同时连接用户的站点必须部署一个比Access更适合的数据源。本文将讲述如何从Microsoft SQL Server(一种企业级RDMS)中获取数据。 SQL Server完全版包括了三个部分。第一个是引擎&#xff0c;用于实际组织数…

全球智能制造发展现状及前景预测 工业机器人引领行业发展

来源&#xff1a;前瞻产业研究院全球智能制造发展历程智能制造是伴随信息技术的不断普及而逐步发展起来的。1988年&#xff0c;美国纽约大学的怀特教授&#xff08;P&#xff0e;K&#xff0e;Wright&#xff09;和卡内基梅隆大学的布恩教授&#xff08;D&#xff0e;A&#xf…

vb整合多个excel表格到一张_VB合并工作表下载

VB合并工作表最新版是一款功能强大且界面简洁美观的excel表格合并工具&#xff0c;VB合并工作表最新版操作简便且易上手可以运行稳定&#xff0c;能够为大家解决合成打开卡顿等问题&#xff0c;实现多薄多表合并&#xff0c;VB合并工作表官方版还可以有效轻松提升工作效率。软件…

sql server 模糊查询

模糊查询——like select * from 表名where id like %2%select * from 表名where id like d%% escape d 查询时&#xff0c;字段中的内容并不一定与查询内容完全匹配&#xff0c;只要字段中含有这些内容 模糊查询&#xff0d;&#xff0d;is null select * from 表名 where na…

java.security.InvalidKeyException: Illegal key size

来源&#xff1a;https://blog.csdn.net/dling8/article/details/84061948 今天在使用idea打包maven项目时&#xff0c;出现这个错误&#xff1a;java.security.InvalidKeyException: Illegal key size。&#xff08;测试也可能会出现这个问题&#xff09;貌似是因为加密出现了…

NAT 详解

NAT技术(一、二、三、四、五) 系列&#xff1a;https://blog.51cto.com/wwwcisco/category1.html CCNA学习笔记之NAT&#xff1a;http://sweetpotato.blog.51cto.com/533893/1392884 网络地址转换NAT原理及应用&#xff1a;http://blog.csdn.net/xiaofei0859/article/details/…

趋势|人工智能疯狂洗脑,最聪明的钱已转向这16项技术

来源&#xff1a;21世纪商业评论 摘要&#xff1a;Gartner今年发布的技术成熟曲线中&#xff0c;出现了16个处于上升阶段的新兴技术&#xff0c;这些正在崛起的技术&#xff0c;或将成为企业未来几年战略性技术趋势的热点。不久前&#xff0c;信息技术研究公司Gartner发布了201…

action在java_@Action(value=/login在java语句中是什么意思

展开全部struts中采用注解配置Action需要导入struts2-convention-plugin的jar包Action省略getters和setters32313133353236313431303231363533e4b893e5b19e31333337386633ParentPackage("xystruts-default")Namespace("/login")public class LoginAction e…