2 Les boucles

Les différentes boucles.

Il existes trois façons de faire des boucles en Javascript : for, while et do...while.

Ces trois instructions sont interchangeables, la différences étant essentiellement d'ordre syntaxique et dans la façon dont sont interprétées  les expression contrôlant la boucle.

La boucle avec for

La syntaxe est :

for(expression1;expression2; instruction2) {
  instructions;
}

Le fonctionnement est le suivant : 

expression1 est évaluée. Puis expression2 est évaluée et tant que elle renvoie une valeur correspondant à vrai (voir le passage sur les conditions dans le chapitre précédent) les instructions sont exécutés, instruction2 est exécuté et on reboucle sur l'évaluation de expression2.

 

Exemple :

for(i = 1; i <= 5 ; i++) {
    alert(i)
}

Ce bout de code affiche des boite de dialogue successives indiquant la valeur de la variable i ( de 1 à 5).
D'abord i reçoit la valeur 1 (i = 1 en expression1) puis i est comparé à 5 (i <= 5 en expression2).
Comme i est inférieur à 5 le contenu du corps de la boucle est exécuté ( instructions qui vaut alert(i) ).
Enfin i est incrémenté (instruction2 valant i++ ) et le code reprend à l'évaluation de expression 2.

On pourrait afficher le décompte de 1 à 5 d'une autre façon :

for(i = 0 ; i++  < 5 ; ) {
    alert(i)
}

ici la variable i est incrémentée aprés avoir été comparé à 5, ce qui fait que la valeur utilisé par la fonction alert() est 1 pour le premier passage, 2 pour le second...et 5 pour le dernier.
N'oubliez pas qu'avec la post incrémentation  dans expression2 la valeur utilisée par alert() et supérieur de 1 à celle qui a été évaluée lors du test.

Vous remarquerez que instruction2 est omis.
En effet les trois paramètres de for sont facultatif. Attention si expression2 est omise alors elle est considéré comme vrai et la boucle devient infinie. nous verrons plus tard comment en sortir si nécessaire.

 

La boucle avec while

La syntaxe est :

while(expression) {
  instructions;
}

Le fonctionnement est le suivant : 
Tant que expression renvoi vrai ou non nul, alors la listes d'instructions contenue entre les accolades est exécutée. Si les instructions n'ont aucune influence sur la valeur de expression, seul un événement extérieur arrêter l'exécution de la boucle. Par exemple pour surveiller la valeur d'un champs input ou d'une case à cocher.

Le même exemple que ci dessus 

i = 0; 
while(i++ < 4 ) {
    alert(i);
}

La boucle avec do...while

La syntaxe est :

do {
  instructions;
} while(expression) 

Le fonctionnement est le suivant : 
La liste d'instructions est exécuté tant que expression renvoie vrai ou non nul. Et non ! ce n'est pas pareil (quoique...). En effet cette version exécute d'abords la liste d'instruction puis évalue expression et boucle ou pas.

toujours le même exemple :

i = 1;
do {
 alert(i);
} while(i++ < 5 )