From 8dd167021bd48ef8404e0d0c6f3e63b298bb3dc5 Mon Sep 17 00:00:00 2001 From: SphinxKnight Date: Sun, 9 May 2021 20:24:55 +0200 Subject: Fixes #797 (#802) * Update to par w/ en-US 13360cb - fixes #797 * FIX: Fix h id * UPDT: Fix h id, and update bcd, replace jsxref Co-authored-by: tristantheb --- .../reference/statements/block/index.html | 136 ++++++++------------- 1 file changed, 52 insertions(+), 84 deletions(-) (limited to 'files/fr/web/javascript/reference/statements/block') diff --git a/files/fr/web/javascript/reference/statements/block/index.html b/files/fr/web/javascript/reference/statements/block/index.html index a367f69678..74780b7415 100644 --- a/files/fr/web/javascript/reference/statements/block/index.html +++ b/files/fr/web/javascript/reference/statements/block/index.html @@ -2,52 +2,53 @@ title: bloc slug: Web/JavaScript/Reference/Statements/block tags: - - Instruction - JavaScript + - Language feature - Reference + - Statement +browser-compat: javascript.statements.block translation_of: Web/JavaScript/Reference/Statements/block original_slug: Web/JavaScript/Reference/Instructions/bloc ---
{{jsSidebar("Statements")}}
-

Une instruction de bloc est utilisée afin de grouper zéro ou plusieurs instructions. Le bloc est délimité par une paire d'accolades. On peut éventuellement « étiqueter » un bloc avec un label.

+

Une instruction de bloc est utilisée afin de grouper zéro ou plusieurs instructions. Le bloc est délimité par une paire d'accolades. On peut éventuellement « étiqueter » un bloc avec un label.

-
{{EmbedInteractiveExample("pages/js/statement-block.html")}}
+
{{EmbedInteractiveExample("pages/js/statement-block.html", "taller")}}
- +

Syntaxe

-

Syntaxe

- -

Instruction de bloc

+

Instruction de bloc

{
-  instruction_1;
-  instruction_2;
+  instruction_1;
+  instruction_2;
   ...
-  instruction_n;
+  instruction_n;
 }
 
-

Instruction de bloc étiquetée

+

Instruction de bloc étiquetée

// ou, avec une étiquette :
-label {
-  instruction_1;
-  instruction_2;
-  instruction_n;
+label: {
+  instruction_1;
+  instruction_2;
+  ...
+  instruction_n;
 }
 
-
instruction_1, instruction_2, instruction_n
-
Les instructions qu'on souhaite regrouper au sein du bloc.
-
label {{optional_inline}}
-
Une étiquette qui permet une identification visuelle de la cible d'une instruction break.
+
instruction_1, instruction_2, instruction_n
+
Les instructions qu'on souhaite regrouper au sein du bloc.
+
label {{optional_inline}}
+
Une étiquette qui permet une identification visuelle de la cible d'une instruction break.
-

Description

+

Description

-

Cette instruction est le plus souvent utilisée avec les instructions de contrôle (ex. {{jsxref("Instructions/if...else")}}, {{jsxref("Instructions/for")}}, {{jsxref("Instructions/while")}}). On verra ainsi :

+

Cette instruction est le plus souvent utilisée avec les instructions de contrôle (ex. if…else, for, while). On verra ainsi :

while (x < 10) {
   x++;
@@ -56,94 +57,61 @@ label {
 
 

On peut voir dans cet exemple que cette instruction se termine sans point-virgule.

-

L'instruction de bloc est souvent appelée instruction composée (compound statement) dans d'autres langages. En effet, elle permet d'utiliser plusieurs instructions là où JavaScript n'attend qu'une instruction. C'est une pratique courante que de combiner plusieurs instructions grâce aux blocs. À l'opposé, on peut utiliser une {{jsxref("Instructions/vide","instruction vide","",1)}} pour ne rien faire là où JavaScript attend une instruction.

+

L'instruction de bloc est souvent appelée instruction composée (compound statement) dans d'autres langages. En effet, elle permet d'utiliser plusieurs instructions là où JavaScript n'attend qu'une instruction. C'est une pratique courante que de combiner plusieurs instructions grâce aux blocs. À l'opposé, on peut utiliser une instruction vide pour ne rien faire là où JavaScript attend une instruction.

-

Gestion des portées

+

Exemples

-

Avec var

+

Règles de portée pour var ou les déclarations de fonction en mode non-strict

-

Important : Le bloc n'introduit aucune portée pour les variables déclarées avec var ou pour les déclarations de fonction. Les variables introduites dans un bloc font partie de la portée de la fonction ou du script, elles persisteront donc en dehors du bloc. Autrement dit, aucune portée n'est introduite par les blocs. Bien qu'il soit tout à fait possible d'utiliser des blocs hors de tout contexte, il est fortement déconseillé de coder de cette façon. En effet, les blocs ne se comportent pas comme d'autres langages tels que C ou Java et il pourrait être surprenant de lire un tel code. Par exemple :

+

Les variables déclarées avec var ou créées avec une déclaration de fonction en mode non-strict n'ont pas une portée limitée au bloc. Les variables introduites dans un bloc auront la portée de la fonction ou du script englobant ce bloc. Les variables pourront alors être utilisées en dehors du bloc. Autrement dit, une instruction de bloc n'introduit pas une portée :

var x = 1;
 {
   var x = 2;
 }
-console.log(x); // affiche 2
+console.log(x); // affiche 2 dans la console
 
-

Cela affiche 2 dans la console car l'instruction var x au sein du bloc partage la même portée que l'instruction var x précédente en dehors du bloc. Un code C ou Java équivalent aurait produit 1.

+

On voit 2 dans la console, car l'instruction var x contenue dans le bloc appartient à la même portée que l'instruction var x située avant le bloc.

+ +

En mode non-strict, les déclarations de fonction à l'intérieur des blocs peuvent se comporter étrangement, il est déconseillé de les utiliser.

-

Avec let et const

+

Règles de portée pour let, const ou les déclarations de fonction en mode strict

-

En revanche, les identifiants déclarés avec let et const appartiennent à la portée du bloc : 

+

En revanche, les identifiants déclarés avec let et const possèdent une portée limitée au bloc :

let x = 1;
 {
   let x = 2;
 }
-console.log(x); // affiche 1
-
+console.log(x); // affiche 1 dans la console
-

On voit ici que l'instruction x = 2 est limitée à la portée du bloc dans laquelle elle est présente.

+

L'instruction x = 2 est limitée à la portée du bloc dans laquelle elle est présente.

-

On a le même résultat avec const.

+

Il en va de même pour const:

const c = 1;
 {
   const c = 2;
 }
-console.log(c); // affiche 1, il n'y a pas de SyntaxError
-
+console.log(c); // affiche 1, ne déclenche pas de SyntaxError + +

L'instruction const c = 2 ne déclenche pas SyntaxError: Identifier 'c' has already been declared, car cet identifiant est bien unique pour ce bloc.

+ +

En mode strict, à partir de ES2015, les fonctions à l'intérieur des blocs ont une portée qui correspond à ce bloc. Avant ES2015, les fonctions de bloc étaient interdites.

+ +

Spécifications

+ +

{{Specifications}}

+ +

Compatibilité des navigateurs

+ +

{{Compat}}

-

On notera que l'instruction const c = 2 ne lève pas d'exception SyntaxError car on a une seule déclaration de c pour ce bloc.

- -

Spécifications

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ESDraft', '#sec-block', 'instruction de bloc')}}{{Spec2('ESDraft')}}
{{SpecName('ES6', '#sec-block', 'instruction de bloc')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-12.1', 'instruction de bloc')}}{{Spec2('ES5.1')}}
{{SpecName('ES3', '#sec-12.1', 'instruction de bloc')}}{{Spec2('ES3')}}
{{SpecName('ES1', '#sec-12.1', 'instruction de bloc')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.0.
- -

Compatibilité des navigateurs

- - - -

{{Compat("javascript.statements.block")}}

- -

Voir aussi

+

Voir aussi

    -
  • {{jsxref("Instructions/while", "while")}}
  • -
  • {{jsxref("Instructions/if...else", "if...else")}}
  • -
  • {{jsxref("Instructions/let", "let")}}
  • +
  • while
  • +
  • if...else
  • +
  • let
-- cgit v1.2.3-54-g00ecf