首页 新闻 会员 周边

javascript闭包问题

0
[已解决问题] 解决于 2011-10-17 15:04

刚想到学习闭包,遇到了一段代码,希望了解的朋友能详细说一下闭包的原理,解释一下各个结果的流程,谢了!

function f() {
var n = 999;  
function f1() {  alert(n += 1);  
}  
return f1;  
}  
var result = f();  
result(); // 1000
  result(); // 1001
  result(); // 1002
呦菜的主页 呦菜 | 初学一级 | 园豆:2
提问于:2011-10-13 17:14
< >
分享
最佳答案
0

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

水晶途途 | 小虾三级 |园豆:1443 | 2011-10-14 23:10
其他回答(1)
1
MySparrow | 园豆:263 (菜鸟二级) | 2011-10-13 20:59

希望这个对你有帮助

支持(0) 反对(0) MySparrow | 园豆:263 (菜鸟二级) | 2011-10-13 21:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册