aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript/reference/statements/label/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'files/fr/web/javascript/reference/statements/label/index.md')
-rw-r--r--files/fr/web/javascript/reference/statements/label/index.md184
1 files changed, 82 insertions, 102 deletions
diff --git a/files/fr/web/javascript/reference/statements/label/index.md b/files/fr/web/javascript/reference/statements/label/index.md
index 1e0c12243a..ac0e02216e 100644
--- a/files/fr/web/javascript/reference/statements/label/index.md
+++ b/files/fr/web/javascript/reference/statements/label/index.md
@@ -8,50 +8,44 @@ tags:
translation_of: Web/JavaScript/Reference/Statements/label
original_slug: Web/JavaScript/Reference/Instructions/label
---
-<div>{{jsSidebar("Statements")}}</div>
+{{jsSidebar("Statements")}}
-<p>Une <strong>instruction étiquetée (<em>labeled</em> en anglais)</strong> peut être utilisée avec les instructions {{jsxref("Instructions/break", "break")}} ou {{jsxref("Instructions/continue", "continue")}}. Un label permet d'identifier une instruction avec un identifiant pour y faire référence plus tard.</p>
+Une **instruction étiquetée (_labeled_ en anglais)** peut être utilisée avec les instructions {{jsxref("Instructions/break", "break")}} ou {{jsxref("Instructions/continue", "continue")}}. Un label permet d'identifier une instruction avec un identifiant pour y faire référence plus tard.
-<div>{{EmbedInteractiveExample("pages/js/statement-label.html")}}</div>
+{{EmbedInteractiveExample("pages/js/statement-label.html")}}
+> **Note :** Les boucles ou les blocs étiquetés sont très rares et on peut généralement utiliser des appels de fonction plutôt que des sauts de boucle.
+## Syntaxe
-<div class="note">
-<p><strong>Note :</strong> Les boucles ou les blocs étiquetés sont très rares et on peut généralement utiliser des appels de fonction plutôt que des sauts de boucle.</p>
-</div>
+ label :
+ instruction
-<h2 id="Syntaxe">Syntaxe</h2>
+- `label`
+ - : N'importe quel identifiant JavaScript qui n'est pas un mot-clé réservé.
+- `instruction`
+ - : Une instruction. `break` peut être utilisé avec n'importe quelle instruction identifiée. `continue` ne peut être utilisé qu'avec des instructions de boucle.
-<pre class="syntaxbox"><em>label</em> :
- <em>instruction</em>
-</pre>
+## Description
-<dl>
- <dt><code>label</code></dt>
- <dd>N'importe quel identifiant JavaScript qui n'est pas un mot-clé réservé.</dd>
- <dt><code>instruction</code></dt>
- <dd>Une instruction. <code>break</code> peut être utilisé avec n'importe quelle instruction identifiée. <code>continue</code> ne peut être utilisé qu'avec des instructions de boucle.</dd>
-</dl>
+Une étiquette (_label_) peut être utilisée pour identifier une boucle et pour y faire référence à l'intérieur en utilisant les instructions `break` ou `continue` afin d'interrompre cette boucle ou de reprendre son exécution.
-<h2 id="Description">Description</h2>
+JavaScript _ne possède pas_ d'instruction `goto`, les étiquettes ne peuvent être utilisées que par les instructions `break` ou `continue`.
-<p>Une étiquette (<em>label</em>) peut être utilisée pour identifier une boucle et pour y faire référence à l'intérieur en utilisant les instructions <code>break</code> ou <code>continue</code> afin d'interrompre cette boucle ou de reprendre son exécution.</p>
+En [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), on ne peut pas utiliser `let` comme étiquette, cela lèvera une exception {{jsxref("SyntaxError")}} (`let` est un identifiant réservé).
-<p>JavaScript <em>ne possède pas</em> d'instruction <code>goto</code>, les étiquettes ne peuvent être utilisées que par les instructions <code>break</code> ou <code>continue</code>.</p>
+## Exemples
-<p>En <a href="/fr/docs/Web/JavaScript/Reference/Strict_mode">mode strict</a>, on ne peut pas utiliser <code>let</code> comme étiquette, cela lèvera une exception {{jsxref("SyntaxError")}} (<code>let</code> est un identifiant réservé).</p>
+### Faire référence à une étiquette avec `continue` dans une boucle
-<h2 id="Exemples">Exemples</h2>
-
-<h3 id="Faire_référence_à_une_étiquette_avec_continue_dans_une_boucle">Faire référence à une étiquette avec <code>continue</code> dans une boucle</h3>
-
-<pre class="brush: js">var i, j;
+```js
+var i, j;
boucle1:
-for (i = 0; i &lt; 3; i++) { //Le premier for correspond à "boucle1"
+for (i = 0; i < 3; i++) { //Le premier for correspond à "boucle1"
boucle2:
- for (j = 0; j &lt; 3; j++) { //Le second for correspond à "boucle2"
- if (i === 1 &amp;&amp; j === 1) {
+ for (j = 0; j < 3; j++) { //Le second for correspond à "boucle2"
+ if (i === 1 && j === 1) {
continue boucle1;
} else {
console.log("i = " + i + ", j = " + j);
@@ -68,34 +62,37 @@ for (i = 0; i &lt; 3; i++) { //Le premier for correspond à "boucle1"
// "i = 2, j = 1"
// "i = 2, j = 2"
// On voit bien l'absence de "i = 1, j = 1" et "i = 1, j = 2"
-</pre>
+```
-<h3 id="Second_exemple_utilisant_continue">Second exemple utilisant <code>continue</code></h3>
+### Second exemple utilisant `continue`
-<p>Étant donné un tableau d'élément et un tableau de tests, cet exemple donne le nombre d'éléments qui ont réussi tous les tests.</p>
+Étant donné un tableau d'élément et un tableau de tests, cet exemple donne le nombre d'éléments qui ont réussi tous les tests.
-<pre class="brush: js">var nbItemsReussis = 0;
+```js
+var nbItemsReussis = 0;
var i, j;
top:
-for (i = 0; i &lt; items.length; i++){
- for (j = 0; j &lt; tests.length; j++){
+for (i = 0; i < items.length; i++){
+ for (j = 0; j < tests.length; j++){
if (!tests[j].reussi(items[i])){
continue top;
}
}
nbItemsReussis++;
-}</pre>
+}
+```
-<h3 id="Utiliser_break_avec_une_étiquette_au_sein_d'une_boucle_for">Utiliser <code>break</code> avec une étiquette au sein d'une boucle <code>for</code></h3>
+### Utiliser `break` avec une étiquette au sein d'une boucle `for`
-<pre class="brush: js">var i, j;
+```js
+var i, j;
boucle1:
-for (i = 0; i &lt; 3; i++) { // première boucle étiquetée « boucle1 »
+for (i = 0; i < 3; i++) { // première boucle étiquetée « boucle1 »
boucle2:
- for (j =0; j &lt; 3; j++) { // seconde boucle étiquetée « boucle2 »
- if (i == 1 &amp;&amp; j == 1) {
+ for (j =0; j < 3; j++) { // seconde boucle étiquetée « boucle2 »
+ if (i == 1 && j == 1) {
break boucle1;
}
console.log("i = " + i + ", j = " + j);
@@ -109,29 +106,31 @@ for (i = 0; i &lt; 3; i++) { // première boucle étiquetée « boucle1 »
// "i = 0, j = 2"
// "i = 1, j = 0"
// Ici on voit la différence avec l'exemple précédent utilisant continue
-</pre>
+```
-<h3 id="Second_exemple_utilisant_un_label_et_break">Second exemple utilisant un label et <code>break</code></h3>
+### Second exemple utilisant un label et `break`
-<p>Étant donné un tableau d'éléments et un tableau de tests, cet exemple permet de déterminer si oui ou non tous les éléments ont réussis tous les tests.</p>
+Étant donné un tableau d'éléments et un tableau de tests, cet exemple permet de déterminer si oui ou non tous les éléments ont réussis tous les tests.
-<pre class="brush: js">var toutReussi = true;
+```js
+var toutReussi = true;
var i, j;
top:
for (i = 0; items.length; i++)
- for (j = 0; j &lt; tests.length; i++)
+ for (j = 0; j < tests.length; i++)
if (!tests[j].reusi(items[i])){
toutReussi = false;
break top;
}
-</pre>
+```
-<h3 id="Utilise_un_bloc_étiqueté_avec_break">Utilise un bloc étiqueté avec <code>break</code></h3>
+### Utilise un bloc étiqueté avec `break`
-<p>On peut utiliser des étiquettes dans des blocs simples mais seul <code>break</code> permettra de faire référence à des étiquettes en dehors d'une boucle.</p>
+On peut utiliser des étiquettes dans des blocs simples mais seul `break` permettra de faire référence à des étiquettes en dehors d'une boucle.
-<pre class="brush: js">toto: {
+```js
+toto: {
console.log("face");
break toto;
console.log("this will not be executed");
@@ -141,65 +140,46 @@ console.log("swap");
// On aura alors dans la console :
// "face"
-// "swap </pre>
+// "swap
+```
-<h3 id="Déclarations_de_fonctions_étiquetées">Déclarations de fonctions étiquetées</h3>
+### Déclarations de fonctions étiquetées
-<p>À partir d'ECMAScript 2015, les déclarations de fonctions étiquetées sont standardisées pour du code non-strict <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-labelled-function-declarations">au sein de l'annexe de la spécification relative à la compatibilité web</a>.</p>
+À partir d'ECMAScript 2015, les déclarations de fonctions étiquetées sont standardisées pour du code non-strict [au sein de l'annexe de la spécification relative à la compatibilité web](http://www.ecma-international.org/ecma-262/6.0/#sec-labelled-function-declarations).
-<pre class="brush: js">L: function F() {}</pre>
+```js
+L: function F() {}
+```
-<p>En revanche, en <a href="/fr/docs/Web/JavaScript/Reference/Strict_mode">mode strict</a>, cela lèvera une exception {{jsxref("SyntaxError")}}:</p>
+En revanche, en [mode strict](/fr/docs/Web/JavaScript/Reference/Strict_mode), cela lèvera une exception {{jsxref("SyntaxError")}}:
-<pre class="brush: js">"use strict";
+```js
+"use strict";
L: function F() {}
-// SyntaxError: functions cannot be labelled</pre>
+// SyntaxError: functions cannot be labelled
+```
-<p><a href="/fr/docs/Web/JavaScript/Reference/Instructions/function*">Les fonctions génératrices</a> ne peuvent pas être étiquetées, en mode strict, comme en mode non-strict :</p>
+[Les fonctions génératrices](/fr/docs/Web/JavaScript/Reference/Instructions/function*) ne peuvent pas être étiquetées, en mode strict, comme en mode non-strict :
-<pre class="brush: js">L: function* F() {}
+```js
+L: function* F() {}
// SyntaxError: generator functions cannot be labelled
-</pre>
-
-<h2 id="Spécifications">Spécifications</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Spécification</th>
- <th scope="col">État</th>
- <th scope="col">Commentaires</th>
- </tr>
- <tr>
- <td>{{SpecName('ES3')}}</td>
- <td>{{Spec2('ES3')}}</td>
- <td>Définition initiale. Implémentée avec JavaScript 1.2.</td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-12.12', 'Labelled statement')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td> </td>
- </tr>
- <tr>
- <td>{{SpecName('ES6', '#sec-labelled-statements', 'Labelled statement')}}</td>
- <td>{{Spec2('ES6')}}</td>
- <td> </td>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-labelled-statements', 'Labelled statement')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
-
-<p>{{Compat("javascript.statements.label")}}</p>
-
-<h2 id="Voir_aussi">Voir aussi</h2>
-
-<ul>
- <li>{{jsxref("Instructions/break", "break")}}</li>
- <li>{{jsxref("Instructions/continue", "continue")}}</li>
-</ul>
+```
+
+## Spécifications
+
+| Spécification | État | Commentaires |
+| ------------------------------------------------------------------------------------------------ | ---------------------------- | ----------------------------------------------------- |
+| {{SpecName('ES3')}} | {{Spec2('ES3')}} | Définition initiale. Implémentée avec JavaScript 1.2. |
+| {{SpecName('ES5.1', '#sec-12.12', 'Labelled statement')}} | {{Spec2('ES5.1')}} |   |
+| {{SpecName('ES6', '#sec-labelled-statements', 'Labelled statement')}} | {{Spec2('ES6')}} |   |
+| {{SpecName('ESDraft', '#sec-labelled-statements', 'Labelled statement')}} | {{Spec2('ESDraft')}} |   |
+
+## Compatibilité des navigateurs
+
+{{Compat("javascript.statements.label")}}
+
+## Voir aussi
+
+- {{jsxref("Instructions/break", "break")}}
+- {{jsxref("Instructions/continue", "continue")}}