Les applications JavaScript sont composées de plusieurs instructions organisées grâce à une syntaxe. Une instruction peut s'étaler sur plusieurs lignes et on peut avoir plusieurs instructions sur une seule ligne si chaque instruction est séparée de la suivante par un point-virgule.

Instructions et déclarations, par catégorie

Pour une liste alphabétique, voir le volet de navigation situé à gauche sur cette page.

Contrôle du flux

Bloc
Une instruction de bloc est utilisée pour regrouper zéro ou plusieurs instructions. Un bloc est délimité par une paire d'accolades.
break
Cette instruction termine la boucle ou l'instruction switch ou l'instruction label en cours et continue l'exécution sur l'instruction suivant l'instruction terminée.
continue
Cette instruction termine l'exécution des instructions dans la boucle courante, ou la boucle avec une étiquette correspondante, et continue l'exécution de la boucle dans l'itération suivante.
Vide
Une instruction vide est utilisée pour ne fournir aucune instruction là où JavaScript en attendrait une.
if...else
Cette instruction exécute une instruction si une condition donnée est vérifiée. Si la condition n'est pas vérifiée une autre instruction pourra être exécutée.
switch
Cette instruction permet d'évaluer une expression et de faire correspondre le résultat de cette expression avec différents cas et d'exécuter les instructions associées aux cas qui ont chacun un identifiant.
throw
Cette instruction lève une exception.
try...catch
Cette instruction permet de spécifier un ensemble d'instructions à tenter, et de préciser le traitement à effectuer dans le cas où une exception est produite.

Déclarations

var

Cette instruction permet de déclarer une variable, éventuellement en fournissant une valeur pour permettant de l'initialiser.

let
Cette instruction permet de déclarer une variable locale dans une portée d'un bloc et éventuellement d'initialiser sa valeur.
const
Cette instruction déclare une constante en lecture seule.

Fonctions et classes

function
Cette instruction déclare une fonction avec les paramètres donnés.
function*
Les fonctions génératrices permettent de créer des itérateurs plus simplement.
async function
Cette instruction déclare une fonction asynchrone avec les paramètres associés.
return
Cette instruction spécifie la valeur de retour renvoyée par une fonction.
class
Déclare une classe.

Itérations

do...while
Cette instruction crée une boucle qui s'exécute tant que la condition est vraie. La condition est évaluée après avoir exécuté une itération de boucle, ce qui fait que cette boucle sera exécutée au moins une fois.
for
Cette instruction crée une boucle qui se base sur trois expressions facultatives. Ces expressions sont entre parenthèses, séparées par des points virgules et suivies par l'instruction à exécuter dans la boucle.
for each...in
Cette instruction itère une variable donnée sur toutes les propriétés d'un objet. Pour chaque propriété distincte, une instruction spécifique est exécutée.
for...in
Cette instruction effectue, dans un ordre arbitraire, une boucle sur les propriétés énumérables d'un objet. Pour chacune des différentes propriétés, des instructions peuvent être exécutées.
for...of
Cette instruction parcourt les objets sur lesquels on peut itérer (comme les tableaux, les itérateurs et générateurs). Pour ce faire, elle utilise un mécanisme d'itération sur mesure utilisant des instructions à exécuter pour chacune des différentes propriétés.
while
Cette instruction permet de créer une boucle qui s'exécute tant qu'une condition de test est vérifiée. La condition est évaluée avant d'exécuter l'instruction contenue dans la boucle.

Autres

debugger
Cette instruction appelle une fonctionnalité de débogage. Si aucune fonctionnalité de débogage n'est disponible, l'instruction n'a aucun effet.
export
Cette instruction permet à un script signé de fournir des propriétés, fonctions et des objets à d'autres scripts (signés ou non).
import
Cette instruction permet à un script d'importer des propriétés, fonctions ou objets depuis un script qui les exporte.
label
Cette instruction fournit un identifiant auquel il est possible de se référer en utilisant une instruction break ou continue.
with
Cette instruction permet d'étendre la portée chaînée d'une instruction.

Spécifications

Spécification Statut Commentaires
ECMAScript 1st Edition (ECMA-262)
La définition de 'Statements' dans cette spécification.
Standard Définition initiale.
ECMAScript 3rd Edition (ECMA-262)
La définition de 'Statements' dans cette spécification.
Standard  
ECMAScript 5.1 (ECMA-262)
La définition de 'Statements' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'ECMAScript Language: Statements and Declarations' dans cette spécification.
Standard Nouveaux éléments : function*, let, for...of, yield, class
ECMAScript Latest Draft (ECMA-262)
La définition de 'ECMAScript Language: Statements and Declarations' dans cette spécification.
Standard évolutif  

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Legacy generator function Non Non (Oui) Non Non Non
async function55 (Oui)52 Non4210.1
block (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
break (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
class42 (Oui)45 Non ?10.1
const21 (Oui)361 2 311 (Oui)5.1
continue (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
debugger (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
do...while (Oui) (Oui) (Oui)6 (Oui) (Oui)
Empty statement (;) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
export61154545 Non4710.1
for (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
for each...in Non Non1.5 Non Non Non
for...in (Oui) (Oui) (Oui)6 (Oui) (Oui)
for...of3812136 Non257.1
function (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
function*391326 Non2610
if...else (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
import61154545 Non4710.1
label (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
let4112447 8 9111710
return (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
switch (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
throw (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
try...catch (Oui) (Oui) (Oui)6 (Oui) (Oui)
var (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
while (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
with (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
FonctionnalitéAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Legacy generator function Non Non Non (Oui) Non Non Non
async function (Oui)55 (Oui)52 Non4210.1
block (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
break (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
class4242 (Oui)45 Non ?10.1
const (Oui) (Oui) (Oui)361 2 311 (Oui) (Oui)
continue (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
debugger (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
do...while (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
Empty statement (;) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
export Non61 (Oui)545 Non4710.1
for (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
for each...in Non Non Non1 Non Non Non
for...in (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
for...of5.1 (Oui)12 (Oui) Non258
function (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
function* (Oui)39 (Oui)26 Non (Oui)10
if...else (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
import Non61 (Oui)545 Non4710.1
label (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
let4141124410 8 9 ?1710
return (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
switch (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
throw (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
try...catch (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
var (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
while (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
with (Oui) (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

1. Prior to Firefox 13, const is implemented, but re-assignment is not failing.

2. Prior to Firefox 46, a TypeError was thrown on redeclaration instead of a SyntaxError.

3.

4. From version 15: this feature is behind the Experimental JavaScript Features preference.

5. From version 54: this feature is behind the dom.moduleScripts.enabled preference. To change preferences in Firefox, visit about:config.

6. Prior to Firefox 51, using the for...of loop construct with the const keyword threw a SyntaxError ("missing = in const declaration").

7. Prior to Firefox 44, let is only available to code blocks in HTML wrapped in a <script type="application/javascript;version=1.7"> block (or higher version) and has different semantics (e.g. no temporal dead zone).

8. Prior to Firefox 46, a TypeError is thrown on redeclaration instead of a SyntaxError.

9. Firefox 54 adds support of let in workers.

10. Prior to Firefox 44, let is only available to code blocks in HTML wrapped in a <script type="application/javascript;version=1.7"> block (or higher version) and has different semantics.

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : SphinxKnight, juestzmichael, fscholz, teoli, matteodelabre
 Dernière mise à jour par : SphinxKnight,