新手求解 javascript闭包问题
答案:2 悬赏:30
解决时间 2021-01-29 01:56
- 提问者网友:眉目添风霜
- 2021-01-28 21:57
新手求解 javascript闭包问题
最佳答案
- 二级知识专家网友:北城痞子
- 2021-01-28 23:13
function f1(){
var n=999;
n++;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
// 执行这句后 result 实际上是 f2
// 原因是 f1() 表示执行 f1 ,会执行到 var n=999; 和 n++; 这两句,n 为 1000
// result=f1() 表示执行 f1 并把返回值保存在 result 中
// 而 f1 中的返回 return f2 ,返回的是 f2
// 所以执行这句后 result 实际上是引用 f2
result(); // 1000
// 这句实际上执行的是 f2 ,不会执行到 var n=999; 和 n++; 这两句
// 在 f2 中的 alert(n) 使用了“父函数”中的局部变量 n ,n 的值是 1000
result(); // 1000
// 这句与上一句相同,还是不会执行到 var n=999; 和 n++; 这两句
var n=999;
n++;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
// 执行这句后 result 实际上是 f2
// 原因是 f1() 表示执行 f1 ,会执行到 var n=999; 和 n++; 这两句,n 为 1000
// result=f1() 表示执行 f1 并把返回值保存在 result 中
// 而 f1 中的返回 return f2 ,返回的是 f2
// 所以执行这句后 result 实际上是引用 f2
result(); // 1000
// 这句实际上执行的是 f2 ,不会执行到 var n=999; 和 n++; 这两句
// 在 f2 中的 alert(n) 使用了“父函数”中的局部变量 n ,n 的值是 1000
result(); // 1000
// 这句与上一句相同,还是不会执行到 var n=999; 和 n++; 这两句
全部回答
- 1楼网友:愁杀梦里人
- 2021-01-28 23:48
f1运行一次n才加1,result()是等同于f2(),然后你看你改之后的代码里面的f2函数里面有让n加1的代码么?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯