L'instruction break
permet de terminer la boucle en cours ou l'instruction switch
ou label
en cours et de passer le contrôle du programme à l'instruction suivant l'instruction terminée.
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Syntaxe
break [label];
label
Facultatif- Un identifiant optionnel associé avec l'étiquette (label) de l'instruction. Si l'instruction à terminer n'est pas une boucle ou une instruction
switch
, ce paramètre est nécessaire.
Description
L'instruction break
peut être utilisée avec une étiquette (label) optionnelle qui permet d'interrompre une instruction étiquetée. L'instruction break
doit être imbriquée au sein de l'instruction référencée. L'instruction étiquetée peut correspondre à n'importe quel instruction de bloc ; il n'est pas nécessaire qu'elle soit précédée par une instruction de boucle.
Une instruction break
, suivie ou non d'une étiquette, ne peut pas être utilisée dans le corps d'une fonction appartenant elle-même à une boucle, à une instruction Instructions/switch
ou à une instruction label
.
Exemples
Exemple simple utilisant break
La fonction qui suit utilise une instruction break
qui interrompt la boucle while
lorsque i
vaut 3, grâce à l'instruction qui suit, la fonction renvoie 3 * x
.
function testBreak(x) { var i = 0; while (i < 6) { if (i == 3) { break; } i += 1; } return i * x; }
Utiliser break
avec les labels
Dans le code suivant, on utilise les instructions break
avec des blocs étiquetés. Une instruction break
doit être présente à l'intérieur du bloc auquel elle fait référence. Ici, on voit que bloc_interne
est compris dans bloc_externe
.
bloc_externe: { bloc_interne: { console.log ('1'); break bloc_externe; // interrompt bloc_externe ET bloc_interne console.log (':-('); // ignoré } console.log ('2'); // ignoré }
Dans le code qui suit, on utilise également des instructions break
avec des blocs étiquetés mais on obtient une exception SyntaxError
car l'instruction break
au sein de bloc_1
référence bloc_2
, or bloc_1
n'est pas compris dans bloc_2
:
bloc_1: { console.log ('1'); break bloc_2; // SyntaxError: label not found } bloc_2: { console.log ('2'); }
Utiliser break
dans des fonctions imbriquées dans des boucles
Dans le cas d'une fonction imbriquée dans une boucle while
:
function testBreak(x){ var i = 0; while (i < 6) { if (i === 3) { (function() { break; })(); } i += 1; } return i * x; } testBreak(1); // SyntaxError: Illegal break statement
Dans le cas d'une fonction imbriquée dans une instruction label
:
bloc_1: { console.log('1'); (function() { break bloc_1; // SyntaxError: Undefined label 'bloc_1' })(); }
Spécifications
Spécification | Statut | Commentaires |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Définition initiale. Version non étiquetée. |
ECMAScript 3rd Edition (ECMA-262) | Standard | Version étiquetée ajoutée. |
ECMAScript 5.1 (ECMA-262) La définition de 'instruction break' dans cette spécification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) La définition de 'instruction break' dans cette spécification. |
Standard | |
ECMAScript Latest Draft (ECMA-262) La définition de 'Break statement' dans cette spécification. |
Projet |
Compatibilité des navigateurs
Ordinateur | Mobile | Serveur | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
break | Chrome Support complet 1 | Edge Support complet 12 | Firefox Support complet 1 | IE Support complet 3 | Opera Support complet Oui | Safari Support complet Oui | WebView Android Support complet 1 | Chrome Android Support complet 18 | Firefox Android Support complet 4 | Opera Android Support complet Oui | Safari iOS Support complet Oui | Samsung Internet Android Support complet 1.0 | nodejs Support complet Oui |
Légende
- Support complet
- Support complet