Java闭包具体应用_闭包的应用

闭包的应用

闭包是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方法所定义的内部全局变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值