js的闭包
目录
- 什么是闭包
- 关于内存
- 那么闭包可以干什么
什么是闭包
闭包就是,当内层作用域通过作用域链向外层寻找数据时的现象
作用域相关可见:https://blog.csdn.net/qq_53922901/article/details/146417362?spm=1001.2014.3001.5501
接下来我们通过debug来证明
可以看到形成了一个closure,也就是闭包
当没有向外层寻找数据时,就不会形成闭包
如果数据只声明了,没有内层的数据调用是不会形成闭包的
关于内存
像闭包这样,数据会一直占用内存,那闭包不会导致内存泄漏吗?
闭包也会被垃圾回收机制回收掉
当我们把断点打到结尾,会发现闭包已经不存在了
那么闭包可以干什么
可以让外部环境访问到函数内的数据
这样写是无法访问的
那我们手动创建一个闭包
在函数内再创建一个函数去向外层寻找i
,形成闭包,这样就就不会因为函数结束后i
跟着消失