1、闭包会使得函数中的变量都保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页性能问题。另外在IE下有可能引发内存泄漏 (内存泄漏指当你的页面跳转的时候 内存不会释放 一直占用你的CPU 只有当你关闭了浏览器才会被释放);
2、闭包会在父函数外部改变父函数内部的变量的值,所以不要随便改动父函数内部的值。
更多参考资料:
《Javascript高级程序设计(第三版)》第四章、第七章
《Javascript面向对象编程指南》第三章
JavaScript高级程序设计(第3版)高清完整PDF中文+英文+源码
作者的话:
这篇文章主要先是通过几个简单的例子介绍作用域链(顺便补充了几个和作用域链相关的易出错的小知识),然后通过提问慢慢过渡到闭包(在闭包这部分介绍了几种常见闭包的例子),后面又进一步讲到了关于闭包的更高级的用法。后面遇到关于闭包的较好的用法会继续更新。