IIFE выполняется только один раз, и значение присваивается f
.Так что есть только одно замыкание, и оно имеет n
, которое увеличивается каждый раз, когда вы вызываете возвращаемую функцию.
const f = function() {
let n = 0;
return function() {
return ++n;
}
};
console.log(f()()); // prints 1
console.log(f()()); // prints 1
console.log(f()()); // prints 1
Это не использует IIFE, это просто обычная функция высшего порядка.Каждый раз, когда вы звоните f
, вы получаете новое закрытие.