Instructions break et continue ECMAScript

Les instructions break et continue fournissent un contrôle plus strict sur l'exécution du code dans une boucle.

Les différences entre les instructions break et continue

Le mot-clé break quitte immédiatement la boucle et empêche la répétition de toute autre exécution de code.

Le mot-clé continue ne quitte que la boucle actuelle et permet encore de continuer à effectuer la prochaine itération en fonction de l'expression de contrôle.

Par exemple :

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    break;
  }
  iNum++;
}
alert(iNum);	// Affiche "4"

Dans le code ci-dessus, la boucle for itère sur la variable i de 1 à 10. Dans le corps de la boucle, l'instruction if vérifie (à l'aide de l'opérateur modulo) si la valeur de i peut être divisible par 5. Si c'est le cas, l'instruction break est exécutée. alert affiche "4", c'est-à-dire le nombre de fois que la boucle a été exécutée avant de quitter.

Si le mot-clé continue remplace le mot-clé break dans cet exemple, le résultat sera différent :

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    continue;
  }
  iNum++;
}
alert(iNum);	// Affiche "8"

Ici, alert affichera "8", c'est-à-dire le nombre de fois que la boucle est exécutée. Le nombre total de boucles potentiellement exécutées peut être 9, mais lorsque la valeur de i est 5, l'instruction continue sera exécutée, ce qui fera sauter l'expression iNum++ et retourner au début de la boucle.

Utilisés avec des instructions étiquetées

Les instructions break et continue peuvent être utilisées avec les instructions étiquetées pour retourner à des emplacements spécifiques dans le code.

En règle générale, lorsque des boucles imbriquées existent à l'intérieur d'une boucle, on procède ainsi, par exemple :

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    break outermost;
  }
  iNum++;
  }
}
alert(iNum);	//Sortie "55"

Dans l'exemple ci-dessus, l'étiquette outermost représente la première instruction for. Normalement, chaque instruction for exécute 10 fois le bloc de code, ce qui signifie que iNum++ devrait être exécuté 100 fois, et à la fin, iNum devrait être égal à 100. Ici, l'instruction break a un paramètre, c'est-à-dire l'étiquette de l'instruction à laquelle il faut sauter après l'arrêt de la boucle. De cette manière, l'instruction break peut non seulement sortir de la boucle for interne (c'est-à-dire l'instruction utilisant la variable j), mais aussi de la boucle for externe (c'est-à-dire l'instruction utilisant la variable i). Par conséquent, la valeur finale de iNum est 55, car lorsque les valeurs de i et j sont toutes deux égales à 5, la boucle se termine.

Il est possible d'utiliser l'instruction continue de la même manière :

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    continue outermost;
  }
  iNum++;
  }
}
alert(iNum);	//Sortie "95"

Dans l'exemple ci-dessus, l'instruction continue force la boucle à continuer, pas seulement la boucle interne, mais aussi la boucle externe. Lorsque j est égal à 5, cela signifie que la boucle interne réduira 5 itérations, ce qui fait que la valeur de iNum est 95.

Astuce :Il est possible de voir que les instructions étiquetées utilisées avec break et continue sont très puissantes, mais leur utilisation excessive peut poser des problèmes de débogage du code. Assurez-vous que les étiquettes utilisées sont descriptives et n'en imbriquez pas trop de niveaux de boucles imbriquées.

Astuce :Pour en savoir plus sur ce que sont les instructions étiquetées, veuillez lire Instructions de balise ECMAScript Cette section.