Затварања (closure) и изазивање функције на месту у 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, а затим се бројање поново започиње.