猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
js闭包问题
请问一下闭包的存在意义。如果要使用外层函数的方法和变量的话,直接把外层函数的方法和变量return出去就行啊,为啥要return内层函数,再从内层函数里引用呢?
慕丝7291255
浏览 275
回答 2
2回答
慕后森
你把外层变量retrun出去,变量在你的函数跑完就被回收了,如果用内层函数中引用,则不会被回收,因为引用在那。好了,举个列子,有个数据量较大的一颗部门树,这棵树基本不会变的,这个时候我用个闭包引用起来,下次我去调用它还在, 直接拿内存,多好,多开心,不用在请求后台,不用在计算。但是记得不用了清除下,防止内存溢出。
0
0
0
ibeautiful
闭包的优点就是避免全局污染,缺点就是造成内存泄漏,这两者之间的取舍需要自己去权衡,没有讲非要用闭包你讲的把外层函数的方法和变量return出去,那么return到哪呢?不还是return到全局去了,既然这样就在全局中声明了大量的变量,可能造成全局污染,再者,又为什么return出去呢,你直接在全局定义不是更直接?如果你想这么使用的话,可以声明一个空对象let myData = Object.creat(null),然后把你的数据都存到这个myData中,存取都在这里,也能避免全局污染
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续