闭包变量常驻内存

闭包变量常驻内存

by kixi

CSS

/*
清晰网
kixi.com.cn
从javascript开始
*/

JavaScript

function f1(){
    var n=999;
    nAdd=function(){n+=1}
    function f2(){
        alert(n);
    }
    return f2;
}
var result = f1();
result();
nAdd();
result();

/*result实际上就是闭包f2函数,它一共运行了两次,一次999,一次1000。
f1是f2的父函数,f2被赋给了一个全局变量,因此f2始终在内存中,而f2依赖f1,所以f1也在内存中。不会被回收。
注意“nAdd=function(){n+=1}”,nAdd前面没有var关键字,因此nAdd是全局变量(请查资料),所以nAdd可以在外部调用
*/