function makeCounter() {
let currentCount = 1;
return function () {
return currentCount++;
};
}
тоже самое что
function makeCounter() {
let currentCount = 1;
function новаяФункцияСозданаяПриВызове_makeCounter() {
return currentCount++;
};
return новаяФункцияСозданаяПриВызове_makeCounter
}
просто без лишних телодвижений.
Всё просто же:
function makeCounter() {
let currentCount = 1;
function новаяФункцияСозданаяПриВызове_makeCounter() {
return currentCount++;
};
return новаяФункцияСозданаяПриВызове_makeCounter
}
let counter = makeCounter(); // counter = новаяФункцияСозданаяПриВызове_makeCounter
console.log(counter()); // console.log(новаяФункцияСозданаяПриВызове_makeCounter())
Функция, как и говорилось выше, в js ничем в сути своей не отличается от любого иного объекта. Её можно присвоить, вернуть из другой функции, создать и исполнить на ходу и.т.д. Ей даже можно присвоить собственные методы и свойства.)