function f1(){
var result=0;
return function (){
return result++
}
}
let a1=f1()
1.第一次调用a1()的时候为什么输出0而不是1呢,不是已经++了吗
2.a1()多次执行的结果是0,1,2,3....那为什么f1()()就全都是0呢
3.好多人都说result一直存在于内存中是因为a1引用的原因,那下面这个函数也是a1引用了呀,
function f1(){
var result=0;
return result++
}
let a1=f1()
求解答
第一个问题 : 为什么已经++了还是0而不是1呢,首先你要搞懂 i++ 和 ++i是两个不一样的,如果是return ++result 那么实惠输出1
第二个问题 : 因为a1()执行多次因为他们所处的作用域是一样的 , 为什么不写a1 = f1()直接f1()()每次都是输出0呢,原因就是每次f1()得到的函数都是不同的,所以产生的闭包所处作用域也是不同,所以每次输出0