function f1(){
let a = 0;
function f2(){
a = a + 1;
return a ;
}
return f2;
}
let x = f1();
const c1 = x();
const c2 = x();
const c3 = x();
const c4 = f1()();
cosnt c5 = f1()();
console.log(c1,c2,c3,c4,c5);
打印后果是:1,2,3,1,1
把 f1 的调用后果赋值给一个变量,而后再用变量的模式调用这个办法,下一次的后果会笼罩上一次调用的后果,因为它们在栈中都是同一个地址,指向堆中的数据。
而应用 f1()() 的形式调用,前一次和下一次的调用会产生不同的地址,指向堆中不同的数据,故互不影响。