Tæller med lukninger i JavaScript

Lad os omskrive den kode, vi har set på, så den returnerede funktion hver gang forøger værdien af variablen num med én:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++; // tilføjer en
  }
}

let func = test();

Det betyder, at hvert kald af funktionen func vil udskrive en ny værdi i konsollen:

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

let func = test();

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

Det viser sig, at vi har implementeret en tæller for funktionskald ved at bruge en lukning (mere præcist ved at bruge variablen num fra vores funktions lukning).

Vær opmærksom på, at hvert kald af funktionen test vil returnere en ny funktion, som vil have sin egen lukning. Det betyder, at forskellige tællere vil arbejde uafhængigt:

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

let func1 = test(); // første tæller
func1();  //udskriver 1
func1();  //udskriver 2

let func2 = test(); // anden tæller
func2();  //udskriver 1
func2();  //udskriver 2

Det viser sig, at den samme variabel num vil have forskellige værdier for forskellige funktioner!

Det betyder, at hvis vi kalder funktionen test to gange, så vil de funktioner, der opnås fra den, arbejde uafhængigt, og hver af disse funktioner vil have sin egen uafhængige variabel num.

Задание 1

Implementer selvstændigt, uden at kigge på min kode, en tæller for funktionskald, der fungerer med lukninger.

Задание 2

Lad funktionen i lukningen gemme tallet 10. Gør så, at hvert funktionskald reducerer dette tal med 1 og udskriver det reducerede tal i konsollen.

Задание 3

Modificer den forrige opgave, så nedtællingen når 0, og herefter udskriver hvert efterfølgende funktionskald en besked i konsollen om, at nedtællingen er afsluttet.