Une boucle while permet d'exécuter du code de façon répétée tant qu'une certaine condition est remplie.
Elle s'écrit avec le mot-clé while, suivi d'une condition entre parenthèses et d'un bloc de code contenant le corps de la boucle entre accolades.
while (condition) {
// code that is executed repeatedly as long as the condition is
// true
}
JavaScript propose aussi une boucle do-while. Ici, la condition est vérifiée après l'exécution du corps de la boucle. C'est utile lorsque la condition dépend d'évaluations effectuées dans le corps.
do {
// The code here will always be executed once and then
// repeatedly while the condition is true.
} while (condition);
break
À l'intérieur du corps d'une boucle, tu peux utiliser le mot-clé break pour arrêter complètement l'exécution de la boucle.
On l'utilise souvent en combinaison avec true comme condition.
Ainsi, tu peux décider depuis n'importe quel endroit du corps de la boucle quand elle doit s'arrêter.
const winningNumber = 7;
while (true) {
const num = readUserGuess();
if (num === winningNumber) {
break;
}
}
Le mot-clé break ne peut pas être utilisé à l'intérieur d'une fonction imbriquée dans la boucle ; tu trouveras un exemple dans la documentation MDN.
continue
Contrairement à break, le mot-clé continue arrête seulement l'exécution de l'itération en cours et passe à la suivante.
Avec continue, tu peux souvent éviter d'envelopper une grande partie du corps de la boucle dans une instruction if.
let i = 0;
while (i < 100) {
i = i + 2;
if (i % 3 === 0) {
continue;
}
// The code here will only be executed when i was not divisible
// by 3 in the check above.
}
Une boucle répétée (théoriquement) à l'infini se produit lorsque la condition de la boucle est toujours remplie et qu'aucune instruction break ou return n'est atteinte dans le corps de la boucle.
L'exécution doit alors être interrompue de l'extérieur.
Selon l'environnement dans lequel ce code s'exécute, cela se fera automatiquement ou nécessitera une intervention manuelle.
let i = 0;
while (i < 100) {
if (i % 3 === 0) {
continue;
}
i = i + 2;
}
// This loop runs forever since the variable i does not change
// anymore after it is divisible by 3 the first time.
Repérer les boucles infinies peut sembler trivial dans cet exemple jouet, mais ce n'est pas toujours aussi simple dans du code plus complexe.
Prends l'habitude de bien vérifier que ta condition finit par devenir fausse, ou que ton instruction break ou return finit par être atteinte.