js闭包问题

请问一下闭包的存在意义。如果要使用外层函数的方法和变量的话,直接把外层函数的方法和变量return出去就行啊,为啥要return内层函数,再从内层函数里引用呢?

阅读 1.5k
2 个回答

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题