Каждый раз, когда вызывается incrCounter
, вы получаете взамен функцию, которая закрывается над только что созданной переменной count
. Если вы вызываете incrCounter
3 раза, вы получаете 3 отдельные count
переменные в разных замыканиях.
Назовите его один раз , чтобы получить функцию, которая закрывается по одной привязке count
, затем вызовите эту функцию 3 раза, чтобы эта привязка была увеличена в 3 раза:
const makeCounter = () => {
let count = 0;
return () => {
return ++count;
}
}
const counter = makeCounter();
counter();
counter();
console.log(counter());
Придание функции более точных имен также сделает вещи более понятными - как и выше, вы можете вызвать функцию-то-возвращает-функцию makeCounter
, и вызовите возвращенную функцию counter
.