Expressions et opérateurs

Ce chapitre documente l'ensemble des opérateurs, expressions et mots-clés pour le langage JavaScript.

Expressions et opérateurs par catégorie

Pour une liste triée par ordre alphabétique, voir sur la barre de navigation à gauche.

Expressions primaires

Mots-clés de base et expressions générales en JavaScript.

this

Le mot-clé this fait référence à une propriété spéciale indiquant le contexte d'exécution.

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 de générateur.

yield

Ce mot-clé permet de suspendre ou de reprendre l'exécution d'une fonction génératrice.

yield*

Ce mot-clé délègue à une autre fonction génératrice ou à un objet itérable.

async function

Le couple de mots-clés async function définit une expression de fonction asynchrone.

await

Ce mot-clé permet de suspendre et de reprendre l'exécution d'une fonction asynchrone et d'attendre la résolution ou l'échec de la promesse.

[]

Syntaxe d'initialisation littérale pour les tableaux.

{}

Syntaxe d'initialisation littérale pour les objets.

/ab+c/i

Syntaxe pour les expressions littérales d'expressions rationnelles.

( )

Opérateur de groupement.

Expression « vers la gauche »

Les valeurs situées à gauche sont la cible de l'affectation.

Accesseurs de propriété

Les opérateurs d'accès aux membres permettent d'accéder à une propriété ou à une méthode d'un objet. (cela regroupe objet.propriete et objet["propriete"]).

new

L'opérateur new crée une instance grâce à un constructeur.

new.target

Pour les constructeurs, new.target fait référence au constructeur invoqué avec new.

import.meta

Un objet qui expose des métadonnées spécifiques au contexte pour un module JavaScript.

super

Le mot-clé super appelle le constructeur parent.

...obj

La syntaxe de décomposition permet de développer une expression là où plusieurs arguments (dans le cas des appels à une fonction) ou là où plusieurs éléments (dans le cas des tableaux) sont attendus.

Incrémentation et décrémentation

Des opérateurs préfixes ou suffixes pour incrémenter/décrémenter.

A++

L'opérateur d'incrémentation suffixe.

A--

L'opérateur de décrémentation suffixe.

++A

L'opérateur d'incrémentation préfixe.

--A

L'opérateur de décrémentation préfixe.

Opérateurs unaires

Une opération unaire est une opération qui ne manipule qu'un seul opérande.

delete

L'opérateur delete permet de supprimer une propriété d'un objet.

void

L'opérateur void permet d'ignorer la valeur de retour d'une expression.

typeof

L'opérateur typeof détermine le type d'un objet donné.

+

L'opérateur unaire + convertit son opérande en une valeur de type number.

-

L'opérateur unaire - convertit son opérande en nombre puis prend son opposé.

~

L'opérateur binaire NON.

!

L'opérateur logique NON.

Opérateurs arithmétiques

Les opérateurs arithmétiques utilisent des valeurs numériques (littérales ou variables) pour leurs opérandes et renvoient une seule valeur numérique en résultat.

+

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.

**

L'opérateur d'exponentiation.

Opérateurs relationnels

Un opérateur de comparaison compare ses opérandes et renvoie une valeur booléenne en fonction de la vérité de cette comparaison.

in

L'opérateur in détermine la présence d'une propriété donnée au sein d'un objet.

instanceof

L'opérateur instanceof détermine si un objet est une instance d'un autre objet.

<

L'opérateur d'infériorité strict.

>

L'opérateur de supériorité stricte.

<=

L'opérateur d'infériorité.

>=

L'opérateur de supériorité.

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

Opérateurs d'égalité

Le résultat de l'évaluation fournie par un opérateur d'égalité est toujours un booléen, fonction de la vérité de la comparaison effectuée.

==

L'opérateur d'égalité.

!=

L'opérateur d'inégalité.

===

L'opérateur d'égalité stricte.

!==

L'opérateur d'inégalité stricte.

Opérateurs de décalage binaires

Ces opérations permettent de décaler les bits de la représentation binaire de l'opérande.

<<

Opérateur de décalage binaire à gauche.

>>

Opérateur de décalage binaire à droite.

>>>

Opérateur de décalage binaire à droite non signé.

Opérateurs binaires booléens

Ces opérateurs manipulent leurs opérandes comme des ensembles de 32 bits et renvoient des valeurs numériques standard.

&

Opérateur ET/AND binaire.

|

Opérateur OU/OR binaire.

^

Opérateur OU exclusif/XOR binaire.

Opérateurs logiques

Les opérateurs logiques sont généralement utilisés avec des valeurs booléennes, quand c'est le cas, la valeur de retour de l'expression est une valeur booléenne.

&&

Opérateur logique ET/AND.

||

Opérateur logique OU/OR.

??

Opérateur de coalescence des nuls.

Opérateur conditionnel ternaire

(condition ? ifTrue : ifFalse)

L'opérateur conditionnel renvoie une valeur parmi deux selon la valeur logique de la condition portée par le premier opérande.

Opérateur de chaînage optionnel

?.

L'opérateur de chaînage optionnel renvoie undefined plutôt que de causer une erreur si une référence vaut null ou undefined.

Opérateurs d'affectation

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

=

Opérateur d'affectation.

*=

Opérateur de multiplication et d'affectation.

**=

Opérateur d'exponentiation et d'affectation.

/=

Opérateur de division et d'affectation.

%=

Opérateur de reste et d'affectation.

+=

Opérateur d'addition et d'affectation.

-=

Opérateur de soustraction et d'affectation

<<=

Opérateur de décalage à gauche et d'affectation.

>>=

Opérateur de décalage à droite et d'affectation.

>>>=

Opérateur de décalage à droite non signé et d'affectation.

&=

Opérateur binaire ET et d'affectation.

^=

Opérateur binaire OU exclusif et d'affectation.

|=

Opérateur binaire OU et d'affectation.

&&=

Opérateur booléen ET et d'affectation.

||=

Opérateur booléen OU et d'affectation.

??=

Opérateur d'affectation et de logique nulle.

[a, b] = [1, 2] {a, b} = {a:1, b:2}

L'affectation par décomposition permet d'affecter les propriétés d'un tableau ou d'un objet à des variables en utilisant une syntaxe similaire à celle des littéraux pour les tableaux et les objets.

Opérateur virgule

,

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

Spécifications

Specification
ECMAScript® 2025 Language Specification
# sec-unary-minus-operator
ECMAScript® 2025 Language Specification
# sec-assignment-operators
ECMAScript® 2025 Language Specification
# sec-left-shift-operator
ECMAScript® 2025 Language Specification
# sec-equality-operators
ECMAScript® 2025 Language Specification
# sec-built-in-function-objects
ECMAScript® 2025 Language Specification
# sec-null-value
ECMAScript® 2025 Language Specification
# sec-postfix-decrement-operator
ECMAScript® 2025 Language Specification
# sec-unary-plus-operator
ECMAScript® 2025 Language Specification
# prod-LogicalORExpression
ECMAScript® 2025 Language Specification
# sec-postfix-increment-operator
ECMAScript® 2025 Language Specification
# prod-CoalesceExpression
ECMAScript® 2025 Language Specification
# prod-BitwiseANDExpression
ECMAScript® 2025 Language Specification
# sec-multiplicative-operators
ECMAScript® 2025 Language Specification
# sec-function-definitions
ECMAScript® 2025 Language Specification
# sec-class-definitions
HTML
# import-meta-resolve
ECMAScript® 2025 Language Specification
# sec-super-keyword
ECMAScript® 2025 Language Specification
# sec-relational-operators
ECMAScript® 2025 Language Specification
# sec-bitwise-not-operator
ECMAScript® 2025 Language Specification
# sec-addition-operator-plus
ECMAScript® 2025 Language Specification
# sec-grouping-operator
ECMAScript® 2025 Language Specification
# sec-void-operator
ECMAScript® 2025 Language Specification
# sec-subtraction-operator-minus
ECMAScript® 2025 Language Specification
# prod-SpreadElement
ECMAScript® 2025 Language Specification
# sec-async-generator-function-definitions
ECMAScript® 2025 Language Specification
# prod-ArgumentList
ECMAScript® 2025 Language Specification
# prod-PropertyDefinition
ECMAScript® 2025 Language Specification
# prod-BitwiseXORExpression
ECMAScript® 2025 Language Specification
# sec-logical-not-operator
ECMAScript® 2025 Language Specification
# sec-generator-function-definitions
ECMAScript® 2025 Language Specification
# sec-destructuring-assignment
ECMAScript® 2025 Language Specification
# sec-destructuring-binding-patterns
ECMAScript® 2025 Language Specification
# sec-async-function-definitions
ECMAScript® 2025 Language Specification
# sec-comma-operator
ECMAScript® 2025 Language Specification
# sec-signed-right-shift-operator
ECMAScript® 2025 Language Specification
# sec-property-accessors
ECMAScript® 2025 Language Specification
# prod-LogicalANDExpression
ECMAScript® 2025 Language Specification
# sec-this-keyword
ECMAScript® 2025 Language Specification
# sec-delete-operator
ECMAScript® 2025 Language Specification
# sec-new-operator
ECMAScript® 2025 Language Specification
# sec-import-calls
ECMAScript® 2025 Language Specification
# sec-typeof-operator
ECMAScript® 2025 Language Specification
# sec-generator-function-definitions-runtime-semantics-evaluation
ECMAScript® 2025 Language Specification
# prod-OptionalExpression
ECMAScript® 2025 Language Specification
# sec-object-initializer
ECMAScript® 2025 Language Specification
# sec-unsigned-right-shift-operator
ECMAScript® 2025 Language Specification
# prod-YieldExpression
ECMAScript® 2025 Language Specification
# prod-ImportMeta
ECMAScript® 2025 Language Specification
# sec-conditional-operator
ECMAScript® 2025 Language Specification
# sec-exp-operator
ECMAScript® 2025 Language Specification
# prod-BitwiseORExpression

Compatibilité des navigateurs

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Addition (+)
Addition assignment (x += y)
Assignment (x = y)
async function expression
async function* expression
await
Use at module top level
Bitwise AND (a & b)
Bitwise AND assignment (x &= y)
Bitwise NOT (~a)
Bitwise OR (a | b)
Bitwise OR assignment (x |= y)
Bitwise XOR (a ^ b)
Bitwise XOR assignment (x ^= y)
class
Comma operator
Conditional operator (c ? t : f)
Decrement (--)
delete
Destructuring assignment
Computed property names
Rest in arrays
Rest in objects
Division (/)
Division assignment (x /= y)
Equality (a == b)
Exponentiation (**)
Exponentiation assignment (x **= y)
function expression
Trailing comma in parameters
function* expression
Trailing comma in parameters
Greater than (a > b)
Greater than or equal (a >= b)
Grouping operator ()
import
The options parameter
Non-standard
Available in workers
import.meta
import.meta.resolve
in
Increment (++)
Inequality (a != b)
instanceof
Bitwise left shift (a << b)
Left shift assignment (x <<= y)
Less than (a < b)
Less than or equal (a <= b)
Logical AND (&&)
Logical AND assignment (x &&= y)
Logical NOT (!)
Logical OR (||)
Logical OR assignment (x ||= y)
Multiplication (*)
Multiplication assignment (x *= y)
new
new.target
null
Nullish coalescing operator (??)
Nullish coalescing assignment (x ??= y)
Object initializer
Computed property names
Shorthand method names
Shorthand property names
Spread properties
Optional chaining operator (?.)
Property accessors
Remainder (%)
Remainder assignment (x %= y)
Bitwise right shift (a >> b)
Right shift assignment (x >>= y)
Spread syntax (...)
Spread in array literals
Spread in function calls
Spread in object literals
Strict equality (a === b)
Strict inequality (a !== b)
Subtraction (-)
Subtraction assignment (x -= y)
super
this
typeof
Unary negation (-)
Unary plus (+)
Bitwise unsigned right shift (a >>> b)
Unsigned right shift assignment (x >>>= y)
void
yield
yield*

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
No support
No support
Non-standard. Check cross-browser support before using.
See implementation notes.
Has more compatibility info.

Voir aussi