什么是闭包
在函数外部能够读取其他函数内部变量的函数。 通俗理解的闭包: 一个内部函数引用了外部函数的变量,外部函数形成了一个闭包.
闭包认识
初体验
例:在函数的外部实现函数内部变量的访问
原理
js中的变量,函数在执行的时候都会被加载到栈中,执行完毕在弹出,当使用闭包的时候,函数执行完成后,不会弹出,因为其他的地方还要加载其内部变量.
闭包的特点
1 使用不当会很容易造成内存泄露(内存中能存的东西越来越少,像是其他部分被泄露了一样)
2 设置私有变量(内部函数调用外部函数的局部变量,此时,这个局部变量就会变成内部函数的私有变量)
3 闭包的作用:充当一个摄像头,函数外部可以访问函数内部的变量,减少变量的声明,避免造成污染.
4 内存的占用比较大,浪费内存.
闭包的缺陷
闭包会导致一定程度的内存泄漏:
主流浏览器中都有一个JS执行引擎,其中有一个回收机制,回收机制会定时删除不必要的冗杂数据。
但是回收机制无法回收闭包的函数,及闭包函数中存储的数据。这就会使得浏览器需要更多性能方面的开销。
闭包的其他作用
1.做缓存,能让多个函数同时作用于一个对象
2.实现封装,让属性能够私有化
3.在模块化开发中,能防止污染全局变量