新手求解 javascript闭包问题
发布网友
发布时间:2022-04-29 13:20
我来回答
共2个回答
热心网友
时间:2022-04-24 04:35
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++; 这两句
热心网友
时间:2022-04-24 05:53
f1运行一次n才加1,result()是等同于f2(),然后你看你改之后的代码里面的f2函数里面有让n加1的代码么?