Licznik na domknięciach w JavaScript

Przepiszmy rozważany przez nas kod tak, aby zwracana funkcja za każdym razem zwiększała wartość zmiennej num o jeden:

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

let func = test();

Okaże się, że każde wywołanie funkcji func będzie wypisywać w konsoli nową wartość:

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

let func = test();

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

Okazuje się, że zaimplementowaliśmy licznik wywołań funkcji, używając domknięcia (a dokładniej używając zmiennej num z domknięcia naszej funkcji).

Pamiętaj, że każde wywołanie funkcji test będzie zwracać nową funkcję, która będzie miała swoje własne domknięcie. Oznacza to, że różne liczniki będą działać niezależnie:

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

let func1 = test(); // pierwszy licznik
func1();  //wypisze 1
func1();  //wypisze 2

let func2 = test(); // drugi licznik
func2();  //wypisze 1
func2();  //wypisze 2

Okazuje się, że ta sama zmienna num dla różnych funkcji będzie miała różne wartości!

Oznacza to, że jeśli wywołamy funkcję test dwa razy, to otrzymane z niej funkcje będą działać w sposób niezależny i każda z tych funkcji będzie miała swoją niezależną zmienną num.

Задание 1

Samodzielnie, bez podglądania w mój kod, zaimplementuj licznik wywołań funkcji, działający na domknięciach.

Задание 2

Niech funkcja w domknięciu przechowuje liczbę 10. Sprawdź, aby każde wywołanie funkcji zmniejszało tę liczbę o 1 i wypisywało w konsoli zmniejszoną liczbę.

Задание 3

Zmodyfikuj poprzednie zadanie tak, aby odliczanie dochodziło do 0, a następnie każde kolejne wywołanie funkcji wypisywało w konsoli komunikat o zakończeniu odliczania.