请问一下闭包的存在意义。如果要使用外层函数的方法和变量的话,直接把外层函数的方法和变量return出去就行啊,为啥要return内层函数,再从内层函数里引用呢?
2 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
你把外层变量retrun出去,变量在你的函数跑完就被回收了,如果用内层函数中引用,则不会被回收,因为引用在那。好了,举个列子,有个数据量较大的一颗部门树,这棵树基本不会变的,这个时候我用个闭包引用起来,下次我去调用它还在, 直接拿内存,多好,多开心,不用在请求后台,不用在计算。但是记得不用了清除下,防止内存溢出。
森林海
TA贡献2011条经验 获得超2个赞
闭包的优点就是避免全局污染,缺点就是造成内存泄漏,这两者之间的取舍需要自己去权衡,没有讲非要用闭包
你讲的把外层函数的方法和变量return出去,那么return到哪呢?不还是return到全局去了,既然这样就在全局中声明了大量的变量,可能造成全局污染,再者,又为什么return出去呢,你直接在全局定义不是更直接?
如果你想这么使用的话,可以声明一个空对象let myData = Object.creat(null)
,然后把你的数据都存到这个myData中,存取都在这里,也能避免全局污染
- 2 回答
- 0 关注
- 255 浏览
添加回答
举报
0/150
提交
取消