闭包的个人理解

闭包:

官方定义:有权访问另一个函数作用域中变量的函数,这样子说看起就很抽象,其实这也就是一个作用域可以访问另一个作用域里面的变量。

更全面的解释就是在js中,变量的作用域属于函数作用域,在函数执行后作用域就会被清理、内存也随之回收,但是由于闭包是建立在一个函数内部的子函数,由于其可访问上级作用域的原因,即使上级函数执行完,作用域也不会随之销毁,这时的子函数——也就是闭包,便拥有了访问上级作用域中的变量的权限,即使上级函数执行完后作用域内的值也不会被销毁。

闭包:

 

输出是:10

我们fun 这个函数作用域 访问了另外一个函数 fn 里面的局部变量 num,所以这就是一个闭包了;本来呢,我们全局变量 是没办法拿到局部变量的,但是有闭包,就可以,闭包的好处就是可以延伸变量的作用范围。

闭包的应用:

 

这样子你最终显示哪个都是4,因为for循环只是给li绑定事件,但是里面的函数代码并不会执行,这个执行是在你点击的时候才执行的,但是此时的i已经是4,所以所有的都打印出4来了。这种情况可以使用闭包解决:


这样子的作用就是利用for创造4个立即执行函数,每个立即执行函数都是闭包,所以i的值会一直保存在内存中,这样子点击的时候就可以拿到i的值了。

 

闭包有好处也有坏处,坏处就是会导致内存泄漏,所以不能滥用闭包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值