当内部函数被保存到外部的时候会生成闭包,闭包会导致作用域链不释放,造成内存泄漏。
应用:公有变量;缓存;封装,属性私有化;模块化开发,防止污染全局变量。
例子:
function fun () {
var a = 0;
function add () {
a++;
console.log(a);
}
return add;
}
var test = fun();
test();
test();
这个例子中将add函数保存到了外部,形成了闭包,所以变量a就会成为共有变量,第一次执行test输出1,第二次执行test输出2.