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()()的方式调用,前一次和下一次的调用会产生不同的地址,指向堆中不同的数据,故互不影响。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。