JS-闭包

1.什么是闭包(closure)?
闭包是一个特殊的函数,是一个可以访问外部(封闭)函数作用域链中变量的内部函数
2.如何生成一个闭包?
当一个内部函数引用了外部函数的数据(变量/函数)时,那么内部的函数就是闭包
所以只要满足"是函数嵌套",“内部函数引用外部函数数据”
3.闭包特点:
只要闭包还在使用外部函数的数据,那么外部的数据就一直不会被释放
也就是说可以延长外部函数数据的生命周期
4.闭包注意点:
当后续不需要使用闭包的时候,一定要手动将闭包设置为null,否则会出现内存泄漏
5.闭包的优缺点:
优点:不产生全局变量,实现属性私有化
缺点:就是闭包中的数据会常驻内存,在不用的时候需要删除,否则会导致内存溢出(泄露)

function hello(){
		var num = 100;
		var showResult = function () { alert(num)}
		num++;
		return showResult;
}
var showResult = hello();
showResult()//执行结果:弹出101

执行hello()后,hello()闭包内部的变量会存在,而闭包内部函数的内部变量不会存在,使得
JavaScript的垃圾回收机制不会收回hello()占用的资源,因为hello()中的内部函数的执行
需要依赖hello()中的变量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值