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()()的形式调用,前一次和下一次的调用会产生不同的地址,指向堆中不同的数据,故互不影响。