为了账号安全,请及时绑定邮箱和手机立即绑定

关于js闭包问题?

关于js闭包问题?

互换的青春 2018-07-18 12:02:42
请问一下闭包的存在意义。如果要使用外层函数的方法和变量的话,直接把外层函数的方法和变量return出去就行啊,为啥要return内层函数,再从内层函数里引用呢?
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

你把外层变量retrun出去,变量在你的函数跑完就被回收了,如果用内层函数中引用,则不会被回收,因为引用在那。好了,举个列子,有个数据量较大的一颗部门树,这棵树基本不会变的,这个时候我用个闭包引用起来,下次我去调用它还在, 直接拿内存,多好,多开心,不用在请求后台,不用在计算。但是记得不用了清除下,防止内存溢出。

查看完整回答
反对 回复 2018-07-20
?
森林海

TA贡献2011条经验 获得超2个赞

闭包的优点就是避免全局污染,缺点就是造成内存泄漏,这两者之间的取舍需要自己去权衡,没有讲非要用闭包

你讲的把外层函数的方法和变量return出去,那么return到哪呢?不还是return到全局去了,既然这样就在全局中声明了大量的变量,可能造成全局污染,再者,又为什么return出去呢,你直接在全局定义不是更直接?

如果你想这么使用的话,可以声明一个空对象let myData = Object.creat(null),然后把你的数据都存到这个myData中,存取都在这里,也能避免全局污染


查看完整回答
反对 回复 2018-07-20
  • 2 回答
  • 0 关注
  • 236 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信