刚想到学习闭包,遇到了一段代码,希望了解的朋友能详细说一下闭包的原理,解释一下各个结果的流程,谢了!
function f() {
var n = 999;
function f1() { alert(n += 1);
}
return f1;
}
var result = f();
result(); // 1000
result(); // 1001
result(); // 1002
var result = f();
result(); // 1000
result(); // 1001
result(); // 1002
function f(){...}是定义一个方法,var result =f(); "f()"就是执行方法f,方法f返回一个方法f1,因为内部方法f1被返回到外界,所以f的内存不会被销毁,JavaScript的机制是这样的,所以此时的result变量就指向了方法f,"result()"就是执行方法f,由于f一直没有销毁,所以n也一直存在,所以会依次弹出1000,1001,1002