Variable locale de compteur en JavaScript

Considérons le code suivant :

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

test()(); // affichera 1
test()(); // affichera 1

Pourquoi le nombre 1 sera-t-il toujours affiché ? Pour le comprendre, réécrivons notre code différemment :

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

let func1 = test(); //!! première fonction
func1();  //affichera 1

let func2 = test(); //!! deuxième fonction
func2();  //affichera 1

Autrement dit, chaque appel de la fonction test de cette manière : test()(), crée sa propre fonction avec sa propre fermeture et appelle immédiatement cette fonction.

Задание 1

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

javascriptfunction func() {
  let num = 0;
  
  return function() {
    console.log(num);
    num++;
  };
}

func()();
func()();
func()();
Задание 2

Déterminez, sans exécuter le code, ce qui sera affiché dans la console :

javascriptfunction func() {
  let num = 0;
  
  return function() {
    console.log(num);
    num++;
  };
}

let test = func;

test()();
test()();
test()();