Sulgemised ja funktsiooni kohene käivitamine JavaScriptis

Nagu te juba teate, on võimalik koheselt käivitada anonüümne funktsioon ja määrata selle töö tulemus mõnele muutujale:

javascriptlet result = function() {
  return '!';
}();

console.log(result); // väljastab '!'

Sageli pannakse koheselt käivitatav funktsioon sellisel juhul ümarsulgudesse, kuigi pole sellist vajadust. Seda tehakse selleks, et oleks kohe näha, et funktsioon käivitatakse kohe:

javascriptlet result = (function() {
  return '!';
})();

console.log(result); // väljastab '!'

Olgu nüüd koheselt käivitatud funktsiooni tulemuseks anonüümne funktsioon:

javascriptlet func = (function() {
  return function() {
    console.log('!');
  }
})();

func(); // väljastab '!'

Teeme nii, et tagastatav funktsioon hoiaks sulgemises muutujat num:

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
  }
})();

Kui lisada veel num++, siis funktsioon func saab valmis loenduriks:

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  }
})();

func(); //väljastab 1
func(); //väljastab 2
func(); //väljastab 3
func(); //väljastab 4
func(); //väljastab 5
Задание 1

Minu koodi piilumata, realiseerige selline loendur iseseisvalt.

Задание 2

Muutke loenduri tööd nii, et see loeb kuni 5-ni ja seejärel algab lugemine algusest.