javascript 闭包

function a() { 
    var i = 0; 
    function b() { 
        alert(++i); 
    } 
    return b; 
} 
var c = a(); 
c();


这段代码有两个特点: 
函数b嵌套在函数a内部; 
函数a返回函数b。 


闭包有什么作用和效果? 
简而言之,闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。
在上面的例子中,由于闭包的存在使得函数a返回后,a中的i始终存在,这样每次执行c(),i都是自加1后alert出i的值。 

那么我们来想象另一种情况,如果a返回的不是函数b,情况就完全不同了。函数a和b互相引用但又不被外界打扰(被外界引用),因此a执行完后,函数a和b就会被GC回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值