function fun () {
var i = 0
return function () {
console.log(i++)
}
}
var f1 = fun(),
f2 = fun();
console.log(f1); // 因为f1 = fun() 执行 所以f1 f2 都等于 fun return 出的函数 function () {console.log(i++)}
console.log(f2);
f1(); // 0 f1() 是执行 f1这个函数 i++先执行在相加所以i=0
f1(); // 1 在此执行的时候i = 1
f2(); // 0 f2 为 0 的原因是 因为 f2 和 f1 是 fun 是实例化的两个对象
我产深的疑惑在f2()的位置,因为一开是我认为f2()输出的应该是2 因为按照闭包的思路,i会一直增加。但是我没有注意到var f1 = fun(),f2 = fun(); f1 f2是fun()实例的两个对象,他们并不会互相干扰。
闭包与变量作用域
531

被折叠的 条评论
为什么被折叠?



