Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
break
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'instructionbreak permet de terminer la boucle en cours ou l'instructionswitch oulabel en cours et de passer le contrôle du programme à l'instruction suivant l'instruction terminée.
Dans cet article
Exemple interactif
let i = 0;while (i < 6) { if (i === 3) { break; } i = i + 1;}console.log(i);// Expected output: 3Syntaxe
break [label];labelFacultatifUn 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'instructionbreak peut être utilisée avec une étiquette (label) optionnelle qui permet d'interrompre une instruction étiquetée. L'instructionbreak doit être imbriquée au sein de l'instruction référencée. L'instruction étiquetée peut correspondre à n'importe quel instruction debloc ; il n'est pas nécessaire qu'elle soit précédée par une instruction de boucle.
Une instructionbreak, 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 instructionInstructions/switch ou à une instructionlabel.
Exemples
>Exemple simple utilisantbreak
La fonction qui suit utilise une instructionbreak qui interrompt la bouclewhile lorsquei 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;}Utiliserbreak avec les labels
Dans le code suivant, on utilise les instructionsbreak avec des blocs étiquetés. Une instructionbreak doit être présente à l'intérieur du bloc auquel elle fait référence. Ici, on voit quebloc_interne est compris dansbloc_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 instructionsbreak avec des blocs étiquetés mais on obtient une exceptionSyntaxError car l'instructionbreak au sein debloc_1 référencebloc_2, orbloc_1 n'est pas compris dansbloc_2 :
bloc_1: { console.log ('1'); break bloc_2; // SyntaxError: label not found}bloc_2: { console.log ('2');}Utiliserbreak dans des fonctions imbriquées dans des boucles
Dans le cas d'une fonction imbriquée dans une bouclewhile :
function testBreak(x){ var i = 0; while (i < 6) { if (i === 3) { (function() { break; })(); } i += 1; } return i * x;}testBreak(1); // SyntaxError: Illegal break statementDans le cas d'une fonction imbriquée dans une instructionlabel :
bloc_1: { console.log('1'); (function() { break bloc_1; // SyntaxError: Undefined label 'bloc_1' })();}Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-break-statement> |