这里涉及JS中的内存 作用域 预编译
当你每使用调用闭包的时候 浏览器运行内存中都会创建一个新的AO对象 因为闭包的特点 AO对象并不会被销毁 依旧会占用 浏览器运行内存的空间
真正的公司业务的时候 由于闭包不会污染全局变量的特性 不可避免的会使用一些闭包
当闭包多了起来之后 ,内存空间由于闭包不会被销毁 ,在js解析执行之后 浏览器 的可用空间会减少 ,当js要处理较为复杂的情况 超过浏览器的当前运行内存 就会造成内存泄漏 (尤其是低版本IE浏览器,运存小,一旦泄漏立马崩溃)这里提供两种的最简单也是最直接的方式来清除闭包引用
function foo(){ var res = 0; return function(){ console.log(++res) } } var aaa = foo(); aaa(); aaa(); //这里最简单的方式就是 aaa = null; // 在你闭包使用完成后 清除该函数的引用 var aoo = (function(){ var arr = 1; return function(){ console.log(++arr) } })() aoo(); aoo(); //由于立即执行函数的特性 执行完一次就自行消失 //可以做到释放内存的作用