Opérateurs

Ce chapitre documente l'ensemble des opérateurs, expressions et mots-clés utilisés en JavaScript.

Expressions et opérateurs, par catégorie

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

Expressions primaires

Les mots-clés basiques et les expressions générales en JavaScript.

this
Le mot-clé this fait référence à une propriété spéciale du contexte d'exécution de la fonction.
function
Le mot-clé function définit une expression de fonction.
class
Le mot-clé class définit une expression de classe.
 function*
Le mot-clé function* définit une expression pour une fonction génératrice.
yield
Cet opérateur permet de suspendre et de reprendre l'exécution d'une fonction génératrice.
yield*
Cet opérateur permet de déléguer l'exécution de la fonction à une autre fonction ou un autre objet itérable.
async function*
L'opérateur async function définit une expression de fonction asynchrone.
await
Cet opérateur permet de stopper et de reprendre l'exécution d'une fonction asynchrone et d'attendre pour la résolution ou le rejet d'une promesse.
[]
Littéral initialisateur de tableau.
{}
Littéral initialisateur d'objet.
/ab+c/i
Littéral d'expression rationnelle.
( )
Opérateur de groupement.

Expressions « vers la gauche »

On affectera des valeurs aux variables à gauche de l'expression.

Opérateurs de membres
Les opérateurs de membres permettent d'accéder à une propriété ou une méthode d'un objet (objet.propriété et object["propriété"]).
new
L'opérateur new permet de créer une instance d'un constructeur.
new.target
Dans les constructeurs, new.target fait référence au constructeur invoqué par new.
super
Le mot-clé super permet d'appeler le constructeur parent.
...obj
L'opérateur de décomposition permet de développer une expression là où on attend plusieurs arguments (pour des appels de fonctions) ou plusieurs éléments (pour les littéraux de tableaux).

Incrémentation et décrémentation

Les opérateurs d'incrémentation et de décrémentation, suffixe et préfixe :

A++
Opérateur d'incrémentation suffixe.
A--
Opérateur de décrémentation suffixe.
++A
Opérateur d'incrémentation préfixe.
--A
Opérateur de décrémentation préfixe.

Opérateurs unaires

Une opération unaire est une opération qui ne possède qu'un opérande.

delete
L'opérateur delete permet de supprimer une propriété d'un objet.
void
L'opérateur void écarte la valeur de retour d'une expression.
typeof
L'opérateur typeof permet de déterminer le type d'un objet donné.
+
Le plus unaire permet de convertir son opérande en une valeur du type Number.
-
La négation unaire permet de convertir son opérande en une valeur du type Number puis d'en prendre l'opposé.
~
L'opérateur binaire NON (NOT).
!
L'opérateur du NON logique.

Opérateurs arithmétiques

Les opérateurs arithmétiques utilisent des opérandes numériques et renvoie une valeur numérique.

+
L'opérateur d'addition.
-
L'opérateur de soustraction.
/
L'opérateur de division.
*
L'opérateur de multiplication.
%
L'opérateur du reste.
**
Opérateur de puissance (exponentiation).

Opérateurs relationnels

Un opérateur de comparaison permet de comparer deux opérandes et de renvoyer une valeur booléenne selon le résultat de cette comparaison.

in
L'opérateur in permet de déterminer si un objet possède une propriété donnée.
instanceof
L'opérateur instanceof permet de déterminer si un objet est une instance d'un autre objet.
<
Opérateur inférieur strict.
>
Opérateur supérieur strict.
<=
Opérateur inférieur ou égal.
>=
Opérateur supérieur ou égal.

Note : => n'est pas un opérateur. Il s'agit de la notation utilisée pour les fonctions fléchées.

Opérateurs d'égalité

Un opérateur d'égalité considère deux opérandes et produit un résultat booléen basé sur le résultat de la comparaison.

==
Opérateur d'égalité faible.
!=
Opérateur d'inégalité faible.
===
Opérateur d'égalité stricte.
!==
Opérateur d'inégalité stricte.

Opérateurs de décalage binaires

Ces opérations permettent de décaler les bits contenus dans l'opérande.

<<
Opérateur binaire de décalage à gauche.
>>
Opérateur binaire de décalage à droite.
>>>
Opérateur binaire de décalage à droite non-signé.

Opérateurs binaires logiques

Les opérateurs binaires logiques traitent leurs opérandes comme des valeurs sur 32 bits et renvoient une valeur numérique JavaScript correspondant au résultat.

&
ET binaire (AND).
|
OU binaire (OR).
^
OU exclusif binaire (XOR).

Opérateurs logiques

Les opérateurs logiques sont généralement utilisés avec des valeurs booléennes et renvoient une valeur booléenne, résultat de l'opération.

&&
ET logique (AND).
||
OU logique (OR).

Opérateur conditionnel ternaire

(condition ? siVrai : siFaux)

Cet opérateur renvoie une des deux valeurs fournie en fonction de la valeur logique de la condition.

Opérateurs d'affectation

Un opérateur d'affectation permet d'affecter une valeur à son opérande gauche en se basant sur la valeur de l'opérande droit.

=
Opérateur d'affectation.
*=
Affectation après multiplication.
/=
Affectation après division.
%=
Affectation du reste.
+=
Affectation après addition.
-=
Affectation après soustraction.
<<=
Affectation après décalage à gauche.
>>=
Affectation après décalage à droite.
>>>=
Affectation après décalage à droite non-signé.
&=
Affectation après ET binaire.
^=
Affectation après OU exclusif binaire.
|=
Affectation après OU binaire.
[a, b] = [1, 2] {a, b} = {a:1, b:2}

L'affectation par décomposition permet de d'affecter des propriétés d'un objet ou des éléments d'un tableau à plusieurs variables. Cela permet d'utiliser une syntaxe semblable aux littéraux de tableaux/objets.

Opérateur virgule

,
L'opérateur virgule permet d'évaluer plusieurs expressions en une seule instruction et de renvoyer le résultat de la dernière expression.

Fonctionnalités non-standards

Expression de fermetures
La syntaxe d'expression de fermeture est un raccourci pour écrire des fonctions simples.
Opérateurs/Expression_fonction_génératrice_historique
Le mot-clé function peut être utilisé afin de définir une fonction génératrice historique. au sein d'une expression.
[for (x of y) x]
Compréhensions de tableau.
(for (x of y) y)
Compréhensions de générateurs.

Spécifications

Spécification État Commentaires
ECMAScript 1st Edition (ECMA-262)
La définition de 'Expressions' dans cette spécification.
Standard Définition initiale.
ECMAScript 5.1 (ECMA-262)
La définition de 'Expressions' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'ECMAScript Language: Expressions' dans cette spécification.
Standard Nouveaux éléments : opérateur de décomposition, affectation par décomposition, mot-clé super .
ECMAScript (ECMA-262)
La définition de 'ECMAScript Language: Expressions' dans cette spécification.
Standard évolutif  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung InternetNode.js
async function expressionChrome Support complet 55Edge Support complet 15Firefox Support complet 52IE Aucun support NonOpera Support complet 42Safari Support complet 10.1WebView Android Support complet 55Chrome Android Support complet 55Firefox Android Support complet 52Opera Android Support complet 42Safari iOS Support complet 10.3Samsung Internet Android Support complet 6.0nodejs Support complet 7.6.0
Support complet 7.6.0
Support complet 7.0.0
Désactivée
Désactivée From version 7.0.0: this feature is behind the --harmony runtime flag.
awaitChrome Support complet 55Edge Support complet 14Firefox Support complet 52IE Aucun support NonOpera Support complet 42Safari Support complet 10.1WebView Android Support complet 55Chrome Android Support complet 55Firefox Android Support complet 52Opera Android Support complet 42Safari iOS Support complet 10.3Samsung Internet Android Support complet 6.0nodejs Support complet 7.6.0
Support complet 7.6.0
Support complet 7.0.0
Désactivée
Désactivée From version 7.0.0: this feature is behind the --harmony runtime flag.
classChrome Support complet 42Edge Support complet 13Firefox Support complet 45IE Aucun support NonOpera Support complet 29Safari Support complet 7WebView Android Support complet 42Chrome Android Support complet 42Firefox Android Support complet 45Opera Android Support complet 29Safari iOS Support complet 7Samsung Internet Android Support complet 4.0nodejs Support complet 6.0.0
Support complet 6.0.0
Support complet 5.0.0
Désactivée
Désactivée From version 5.0.0: this feature is behind the --harmony runtime flag.
Comma operatorChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 3Opera Support complet 4Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
Conditional operator (c ? t : f)Chrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 3Opera Support complet 3Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
deleteChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 4Opera Support complet 9Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
Destructuring assignmentChrome Support complet 49Edge Support complet 14Firefox Support complet 41
Notes
Support complet 41
Notes
Notes Firefox provided a non-standard destructuring implementation from Firefox 2 to 40.
IE Aucun support NonOpera Support complet 36Safari Support complet 8WebView Android Support complet 49Chrome Android Support complet 49Firefox Android Support complet 41
Notes
Support complet 41
Notes
Notes Firefox provided a non-standard destructuring implementation from Firefox 2 to 40.
Opera Android Support complet 36Safari iOS Support complet 8Samsung Internet Android Support complet 5.0nodejs Support complet 6.0.0
functionChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 3Opera Support complet 3Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
function*Chrome Support complet 49Edge Support complet 12Firefox Support complet 26IE Aucun support NonOpera Support complet 36Safari Support complet 10WebView Android Support complet 49Chrome Android Support complet 49Firefox Android Support complet 26Opera Android Support complet 36Safari iOS Support complet 10Samsung Internet Android Support complet 5.0nodejs Support complet 4.0.0
Grouping operator ()Chrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 3Opera Support complet 3Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
inChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 5.5Opera Support complet 4Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
instanceofChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 5Opera Support complet 4Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
newChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 3Opera Support complet 3Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
new.targetChrome Support complet 46Edge Support complet 13Firefox Support complet 41IE Aucun support NonOpera Support complet 33Safari Support complet 11WebView Android Support complet 46Chrome Android Support complet 46Firefox Android Support complet 41Opera Android Support complet 33Safari iOS Support complet 11Samsung Internet Android Support complet 5.0nodejs Support complet 5.0.0
Nullish coalescing operator (??)Chrome Support complet 80Edge Support complet 80Firefox Support complet 72IE Aucun support NonOpera Support complet 67Safari Support complet 13.1WebView Android Support complet 80Chrome Android Support complet 80Firefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Support complet 13.4Samsung Internet Android Aucun support Nonnodejs Support complet 14.0.0
Object initializerChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 1Opera Support complet 4Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
Optional chaining operator (?.)Chrome Support complet 80
Support complet 80
Support complet 79
Désactivée
Désactivée From version 79: this feature is behind the Experimental JavaScript preference (needs to be set to true). To change preferences in Chrome, visit chrome://flags.
Edge Support complet 80
Support complet 80
Support complet 79
Désactivée
Désactivée From version 79: this feature is behind the Experimental JavaScript preference (needs to be set to true).
Firefox Support complet 74IE Aucun support NonOpera Support complet 67
Support complet 67
Support complet 66
Désactivée
Désactivée From version 66: this feature is behind the Experimental JavaScript preference (needs to be set to true).
Safari Support complet 13.1WebView Android Support complet 80Chrome Android Support complet 80
Support complet 80
Support complet 79
Désactivée
Désactivée From version 79: this feature is behind the Experimental JavaScript preference (needs to be set to true). To change preferences in Chrome, visit chrome://flags.
Firefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Support complet 13.4Samsung Internet Android Aucun support Nonnodejs Support complet 14.0.0
Pipeline operator (|>)
Expérimentale
Chrome Aucun support NonEdge Aucun support NonFirefox Aucun support NonIE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support NonChrome Android Aucun support NonFirefox Android Aucun support NonOpera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Nonnodejs Aucun support Non
Property accessorsChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 3Opera Support complet 4Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
superChrome Support complet 42Edge Support complet 13Firefox Support complet 45IE Aucun support NonOpera Support complet 29Safari Support complet 7WebView Android Support complet 42Chrome Android Support complet 42Firefox Android Support complet 45Opera Android Support complet 29Safari iOS Support complet 7Samsung Internet Android Support complet 4.0nodejs Support complet 6.0.0
thisChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 4Opera Support complet 9.5Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
typeofChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 3Opera Support complet 3Safari Support complet 1WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 1Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
voidChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 5Opera Support complet 4Safari Support complet 3.2WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 3Samsung Internet Android Support complet 1.0nodejs Support complet 0.1.100
yieldChrome Support complet 39Edge Support complet 12Firefox Support complet 26
Notes
Support complet 26
Notes
Notes Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
Notes Starting with Firefox 29, an IteratorResult object returned for completed generator function.
IE Aucun support NonOpera Support complet 26Safari Support complet 10WebView Android Support complet 39Chrome Android Support complet 39Firefox Android Support complet 26
Notes
Support complet 26
Notes
Notes Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
Notes Starting with Firefox 29, an IteratorResult object returned for completed generator function.
Opera Android Support complet 26Safari iOS Support complet 10Samsung Internet Android Support complet 4.0nodejs Support complet 4.0.0
Support complet 4.0.0
Support complet 0.12
Désactivée
Désactivée From version 0.12: this feature is behind the --harmony runtime flag.
yield*Chrome Support complet 39Edge Support complet 12Firefox Support complet 27
Notes
Support complet 27
Notes
Notes Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
IE Aucun support NonOpera Support complet 26Safari Support complet 10WebView Android Support complet 39Chrome Android Support complet 39Firefox Android Support complet 27
Notes
Support complet 27
Notes
Notes Starting with Firefox 33, the parsing of the yield expression has been updated to conform with the ES2015 specification.
Opera Android Support complet 26Safari iOS Support complet 10Samsung Internet Android Support complet 4.0nodejs Support complet 4.0.0
Support complet 4.0.0
Support complet 0.12
Désactivée
Désactivée From version 0.12: this feature is behind the --harmony runtime flag.

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.

Voir aussi