let fn = function () {
let number = 0;
return function () {
number++;
console.log(number);
};
};
let increment = fn();
fn()()
fn()()
fn()()
increment();
increment();
increment();
console.log(increment() === fn()());
打印结果如下
为什么increment()和fn()()输出结果不一样鸭。
很简单
你的三行
fn()()
是每次都会执行fn()
从而每次都在返回一个新的函数对象然后执行而
increment = fn()
执行之后,increment
变量作为单次的fn()
的返回值,你后面的每次调用都是在访问同一个函数对象