Заминания и извикване на функция на място в 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, а след това отброяването да започне
отначало.