接上一节
但凡内部函数被保存到了外部,一定会产生闭包,闭包会导致原有的作用域链不释放,造成内存泄漏
见代码
function a () {
function fn2 () {
var parameter1 = 100;
console.log(parameter2);
}
parameter2 = 300;
return fn2;
}
var fn = a();
console.log(fn);
fn();
a函数执行,再通过return将函数fn2返回出来,虽然a函数执行后销毁,但是fn2仍然可以拿到a之前的AO里的parameter2的值。
function a () {
var result = 100;
function b () {
result ++;
console.log(result);
}
return b;
}
var fn = a();
fn();// 此时result = 100 result ++后result值为101
fn();// 此时result = 101 result ++后result值为102
function fn () {
var num = 10;
function a () {
num --;
console.log(num);
}
function b () {
num ++;
console.log(num);
}
return [a, b]
}
var demo = fn();
console.log(demo);
demo[0]();
demo[1]();