什么是闭包:
闭包就是能够读取其他函数内部变量的函数。
其本质是函数的作用域链中保存着外部函数变量对象的引用。
闭包的应用场景:
1、函数作为参数被传递时使用
2、函数作为返回值被返回时使用
3、实际应用(隐藏数据):为什么说隐藏数据了呢,因为普通用户只能通过get、set等api对数据进行查看和更改等操作,没法对data直接更改,达到所谓隐藏数据的效果;jquery就利用了这一特性,必须调用$.ajax()才能访问内部属性方法。
4、功能封装时使用
5、函数防抖、函数节流
6、单例模式
闭包的优点:
1、变量长期驻扎在内存中
2、可以重复使用变量,并且不会造成变量污染
闭包的缺点:
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露(有一块内存空间被长期占用,而不被释放)
解决方法:
在退出函数之前,将不使用的局部变量全部删除。