Sulunditel põhinev loendur JavaScriptis

Kirjutame ümber koodi, mida me vaatlesime, nii et tagastatud funktsioon suurendaks muutuja num väärtust iga kord ühe võrra:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++; // liidame ühe
  }
}

let func = test();

Selgub, et iga funktsiooni func käivitamine prindib konsooli uue väärtuse:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  }
}

let func = test();

func(); //prindib 1
func(); //prindib 2
func(); //prindib 3
func(); //prindib 4
func(); //prindib 5

Selgub, et oleme realiseerinud funktsiooni käivitusloenduri, kasutades sulundit (täpsemalt kasutades muutujat num meie funktsiooni sulundist).

Pidage meeles, et iga funktsiooni test käivitamine tagastab uue funktsiooni, millel on oma sulund. See tähendab, et erinevad loendurid töötavad sõltumatult:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  };
}

let func1 = test(); // esimene loendur
func1();  //prindib 1
func1();  //prindib 2

let func2 = test(); // teine loendur
func2();  //prindib 1
func2();  //prindib 2

Selgub, et sama muutuja num erinevate funktsioonide jaoks on erinev väärtus!

See tähendab, et kui me käivitame funktsiooni test kaks korda, siis sellest saadud funktsioonid töötavad sõltumatult ja iga nendest funktsioonidest on oma sõltumatu muutuja num.

Задание 1

Realiseerige iseseisvalt, minu koodi peale vahtimata, funktsiooni käivitusloendur, mis töötab sulunditel.

Задание 2

Olgu funktsiooni sulundis hoitav number 10. Tehke nii, et iga funktsiooni käivitamine vähendaks seda numbrit 1 võrra ja prindiks konsooli vähendatud numbri.

Задание 3

Modifitseerige eelmist ülesannet nii, et loendus jõuaks 0-ni ja seejärel iga järgnev funktsiooni käivitamine prindiks konsooli teate, et loendus on lõppenud.