当内部函数以某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了。
闭包最大用处有两个:
- 可以读取函数内部的变量,
- 让这些变量的值始终保持在内存中
|
|
inner被全局变量test代理,而函数inner的执行依赖outer所以outer也被保存在内存中。
闭包的优点:
- 避免全局变量的污染。
- 保护函数内的变量安全,加强了封装性。
- 保存变量。
闭包的缺点:
- 由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。
解决方法是,在退出函数之前,将不使用的局部变量全部删除。