Счетчик на замыканиях в JavaScript

Давайте перепишем рассмотренный нами код так, чтобы возвращаемая функция каждый раз увеличивала значение переменной num на единицу:

function test() { let num = 1; return function() { console.log(num); num++; // прибавляем единицу } } let func = test();

Получится, что каждый вызов функции func будет выводить в консоль новое значение:

function test() { let num = 1; return function() { console.log(num); num++; } } let func = test(); func(); //выведет 1 func(); //выведет 2 func(); //выведет 3 func(); //выведет 4 func(); //выведет 5

Получается, что мы реализовали счетчик вызова функций, используя замыкание (точнее используя переменную num из замыкания нашей функции).

Учтите, что каждый вызов функции test будет возвращать новую функцию, у которой будет свое замыкание. То есть разные счетчики будут работать независимо:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // первый счетчик func1(); //выведет 1 func1(); //выведет 2 let func2 = test(); // второй счетчик func2(); //выведет 1 func2(); //выведет 2

Получается, что одна и та же переменная num для разных функций будет иметь разное значение!

То есть если мы вызовем функцию test два раза, то полученные из нее функции будут работать независимым образом и каждая из этих функций будет иметь свою независимую переменную num.

Самостоятельно, не подсматривая в мой код, реализуйте счетчик вызова функции, работающий на замыканиях.

Пусть функция в замыкании хранит число 10. Сделайте так, чтобы каждый вызов функции уменьшал это число на 1 и выводил в консоль уменьшенное число.

Модифицируйте предыдущую задачу так, чтобы отсчет доходил до 0, а затем каждый последующий вызов функции выводил в консоль сообщение о том, что отсчет окончен.



Чат с GPT Компилятор