Compteur avec des fermetures en JavaScript
Réécrivons le code que nous avons examiné
de sorte que la fonction retournée
augmente à chaque fois la valeur de la variable num
de un :
function test() {
let num = 1;
return function() {
console.log(num);
num++; // on ajoute un
}
}
let func = test();
Il en résulte que chaque appel de la fonction func
affichera dans la console une nouvelle valeur :
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //affichera 1
func(); //affichera 2
func(); //affichera 3
func(); //affichera 4
func(); //affichera 5
Il s'avère que nous avons mis en œuvre un compteur d'appels de
fonctions, en utilisant une fermeture (plus précisément en utilisant
la variable num de la fermeture de notre fonction).
Notez que chaque appel de la fonction test
retournera une nouvelle fonction, qui aura
sa propre fermeture. Autrement dit, différents compteurs
fonctionneront indépendamment :
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // premier compteur
func1(); //affichera 1
func1(); //affichera 2
let func2 = test(); // deuxième compteur
func2(); //affichera 1
func2(); //affichera 2
Il s'avère que la même variable num
aura des valeurs différentes pour différentes fonctions !
Autrement dit, si nous appelons la fonction test
deux fois, alors les fonctions obtenues
fonctionneront de manière indépendante et chacune de
ces fonctions aura sa propre variable
indépendante num.
Indépendamment, sans regarder mon code, mettez en œuvre un compteur d'appels de fonction fonctionnant sur des fermetures.
Supposons que la fonction dans la fermeture stocke le nombre 10.
Faites en sorte que chaque appel de la fonction
réduise ce nombre de 1 et affiche
dans la console le nombre réduit.
Modifiez la tâche précédente pour que
le compte à rebours atteigne 0, puis que chaque
appel suivant de la fonction affiche dans la console
un message indiquant que le compte à rebours est terminé.