Замыкания и вызов функции на месте в JavaScript
Как вы уже знаете, можно вызвать анонимную функцию на месте и присвоить результат работы какой-либо переменной:
let result = function() {
return '!';
}();
console.log(result); // выведет '!'
Часто функцию, вызывающуюся на месте, в таком случае берут в круглые скобки, хотя в этом и нет нужды. Это делается для того, чтобы сразу было видно, что функция вызывается на месте:
let result = (function() {
return '!';
})();
console.log(result); // выведет '!'
Пусть теперь результатом вызванной на месте функции будет анонимная функция:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // выведет '!'
Давайте сделаем так, чтобы возвращаемая функция
хранила в замыкании переменную num
:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Если добавить еще num++
, то функция
func
станет готовым счетчиком:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); //выведет 1
func(); //выведет 2
func(); //выведет 3
func(); //выведет 4
func(); //выведет 5
Не подсматривая в мой код, самостоятельно реализуйте такой же счетчик.
Модифицируйте работу счетчика так, чтобы
он считал до 5
, а потом отсчет начинался
сначала.