1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
---
title: Opérateurs
slug: Web/JavaScript/Reference/Operators
tags:
- JavaScript
- Opérateurs
- Reference
translation_of: Web/JavaScript/Reference/Operators
original_slug: Web/JavaScript/Reference/Opérateurs
---
<div>{{jsSidebar("Operators")}}</div>
<p>Ce chapitre documente l'ensemble des opérateurs, expressions et mots-clés utilisés en JavaScript.</p>
<h2 id="Expressions_et_opérateurs_par_catégorie">Expressions et opérateurs, par catégorie</h2>
<p>Pour une liste alphabétique, voir le volet de navigation situé à gauche sur cette page.</p>
<h3 id="Expressions_primaires">Expressions primaires</h3>
<p>Les mots-clés basiques et les expressions générales en JavaScript.</p>
<dl>
<dt>{{jsxref("Opérateurs/L_opérateur_this", "this")}}</dt>
<dd>Le mot-clé <code>this</code> fait référence à une propriété spéciale du contexte d'exécution de la fonction.</dd>
<dt>{{jsxref("Opérateurs/L_opérateur_function", "function")}}</dt>
<dd>Le mot-clé <code>function</code> définit une expression de fonction.</dd>
<dt>{{jsxref("Opérateurs/class", "class")}}</dt>
<dd>Le mot-clé <code>class</code> définit une expression de classe.</dd>
<dt> {{jsxref("Opérateurs/function*", "function*")}}</dt>
<dd>Le mot-clé <code>function*</code> définit une expression pour une fonction génératrice.</dd>
<dt>{{jsxref("Opérateurs/yield", "yield")}}</dt>
<dd>Cet opérateur permet de suspendre et de reprendre l'exécution d'une fonction génératrice.</dd>
<dt>{{jsxref("Opérateurs/yield*", "yield*")}}</dt>
<dd>Cet opérateur permet de déléguer l'exécution de la fonction à une autre fonction ou un autre objet itérable.</dd>
<dt>{{experimental_inline}} {{jsxref("Opérateurs/async_function", "async function*")}}</dt>
<dd>L'opérateur <code>async function</code> définit une expression de fonction asynchrone.</dd>
<dt>{{experimental_inline}} {{jsxref("Opérateurs/await", "await")}}</dt>
<dd>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.</dd>
<dt>{{jsxref("Objets_globaux/Array", "[]")}}</dt>
<dd>Littéral initialisateur de tableau.</dd>
<dt>{{jsxref("Opérateurs/Initialisateur_objet", "{}")}}</dt>
<dd>Littéral initialisateur d'objet.</dd>
<dt>{{jsxref("Objets_globaux/RegExp", "/ab+c/i")}}</dt>
<dd>Littéral d'expression rationnelle.</dd>
<dt>{{jsxref("Opérateurs/Groupement", "( )")}}</dt>
<dd>Opérateur de groupement.</dd>
</dl>
<h3 id="Expressions_«_vers_la_gauche_»">Expressions « vers la gauche »</h3>
<p>On affectera des valeurs aux variables à gauche de l'expression.</p>
<dl>
<dt>{{jsxref("Opérateurs/Opérateurs_de_membres", "Opérateurs de membres", "", 1)}}</dt>
<dd>Les opérateurs de membres permettent d'accéder à une propriété ou une méthode d'un objet (<code>objet.propriété</code> et <code>object["propriété"]</code>).</dd>
<dt>{{jsxref("Opérateurs/L_opérateur_new", "new")}}</dt>
<dd>L'opérateur <code>new</code> permet de créer une instance d'un constructeur.</dd>
<dt><a href="/fr/docs/Web/JavaScript/Reference/Opérateurs/new.target">new.target</a></dt>
<dd>Dans les constructeurs, <code>new.target</code> fait référence au constructeur invoqué par {{jsxref("Opérateurs/new", "new")}}.</dd>
<dt>{{jsxref("Opérateurs/super", "super")}}</dt>
<dd>Le mot-clé <code>super</code> permet d'appeler le constructeur parent.</dd>
<dt>{{jsxref("Opérateurs/Syntaxe_décomposition", "...obj")}}</dt>
<dd>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).</dd>
</dl>
<h3 id="Incrémentation_et_décrémentation">Incrémentation et décrémentation</h3>
<p>Les opérateurs d'incrémentation et de décrémentation, suffixe et préfixe :</p>
<dl>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "A++", "#Incr.C3.A9ment_(.2B.2B)")}}</dt>
<dd>Opérateur d'incrémentation suffixe.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "A--", "#D.C3.A9cr.C3.A9ment_(--)")}}</dt>
<dd>Opérateur de décrémentation suffixe.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "++A", "#Incr.C3.A9ment_(.2B.2B)")}}</dt>
<dd>Opérateur d'incrémentation préfixe.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "--A", "#D.C3.A9cr.C3.A9ment_(--)")}}</dt>
<dd>Opérateur de décrémentation préfixe.</dd>
</dl>
<h3 id="Opérateurs_unaires">Opérateurs unaires</h3>
<p>Une opération unaire est une opération qui ne possède qu'un opérande.</p>
<dl>
<dt>{{jsxref("Opérateurs/L_opérateur_delete", "delete")}}</dt>
<dd>L'opérateur <code>delete</code> permet de supprimer une propriété d'un objet.</dd>
<dt>{{jsxref("Opérateurs/L_opérateur_void", "void")}}</dt>
<dd>L'opérateur <code>void</code> écarte la valeur de retour d'une expression.</dd>
<dt>{{jsxref("Opérateurs/L_opérateur_typeof", "typeof")}}</dt>
<dd>L'opérateur <code>typeof</code> permet de déterminer le type d'un objet donné.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "+", "#Plus_unaire_(.2B)")}}</dt>
<dd>Le plus unaire permet de convertir son opérande en une valeur du type <code>Number</code>.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "-", "#N.C3.A9gation_unaire_(-)")}}</dt>
<dd>La négation unaire permet de convertir son opérande en une valeur du type <code>Number</code> puis d'en prendre l'opposé.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_binaires", "~", "#.7E_.28NON_binaire.29")}}</dt>
<dd>L'opérateur binaire NON (<em>NOT</em>).</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_logiques", "!", "#NON_logique_.28.21.29")}}</dt>
<dd>L'opérateur du NON logique.</dd>
</dl>
<h3 id="Opérateurs_arithmétiques">Opérateurs arithmétiques</h3>
<p>Les opérateurs arithmétiques utilisent des opérandes numériques et renvoie une valeur numérique.</p>
<dl>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "+", "#Addition_(.2B)")}}</dt>
<dd>L'opérateur d'addition.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "-", "#Soustraction_(-)")}}</dt>
<dd>L'opérateur de soustraction.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "/", "#Division_(.2F)")}}</dt>
<dd>L'opérateur de division.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "*", "#Multiplication_(*)")}}</dt>
<dd>L'opérateur de multiplication.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques", "%", "#Reste_(.25)")}}</dt>
<dd>L'opérateur du reste.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_arithmétiques","**","#Exponentiation")}}</dt>
<dd>Opérateur de puissance (exponentiation).</dd>
</dl>
<h3 id="Opérateurs_relationnels">Opérateurs relationnels</h3>
<p>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.</p>
<dl>
<dt>{{jsxref("Opérateurs/L_opérateur_in", "in")}}</dt>
<dd>L'opérateur <code>in</code> permet de déterminer si un objet possède une propriété donnée.</dd>
<dt>{{jsxref("Opérateurs/instanceof", "instanceof")}}</dt>
<dd>L'opérateur <code>instanceof</code> permet de déterminer si un objet est une instance d'un autre objet.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_de_comparaison", "<", "#Op.C3.A9rateur_inf.C3.A9rieur_strict_(<)")}}</dt>
<dd>Opérateur inférieur strict.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_de_comparaison", ">", "#Op.C3.A9rateur_sup.C3.A9rieur_strict_(>)")}}</dt>
<dd>Opérateur supérieur strict.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_de_comparaison", "<=", "#Op.C3.A9rateur_inf.C3.A9rieur_ou_.C3.A9gal_(<.3D)")}}</dt>
<dd>Opérateur inférieur ou égal.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_de_comparaison", ">=", "#Op.C3.A9rateur_sup.C3.A9rieur_ou_.C3.A9gal_(>.3D)")}}</dt>
<dd>Opérateur supérieur ou égal.</dd>
</dl>
<div class="note">
<p><strong>Note :</strong> <code>=></code> n'est pas un opérateur. Il s'agit de la notation utilisée pour <a href="/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fl%C3%A9ch%C3%A9es">les fonctions fléchées</a>.</p>
</div>
<h3 id="Opérateurs_d'égalité">Opérateurs d'égalité</h3>
<p>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.</p>
<dl>
<dt>{{jsxref("Opérateurs/Opérateurs_de_comparaison", "==", "#Egalit.C3.A9_(.3D.3D)")}}</dt>
<dd>Opérateur d'égalité faible.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_de_comparaison", "!=", "#Inequality_(!.3D)")}}</dt>
<dd>Opérateur d'inégalité faible.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_de_comparaison", "===", "#Identity_.2F_strict_equality_(.3D.3D.3D)")}}</dt>
<dd>Opérateur d'égalité stricte.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_de_comparaison", "!==", "#Non-identity_.2F_strict_not_equal_(!.3D.3D)")}}</dt>
<dd>Opérateur d'inégalité stricte.</dd>
</dl>
<h3 id="Opérateurs_de_décalage_binaires">Opérateurs de décalage binaires</h3>
<p>Ces opérations permettent de décaler les bits contenus dans l'opérande.</p>
<dl>
<dt>{{jsxref("Opérateurs/Opérateurs_binaires", "<<", "#.3C.3C_.28d.C3.A9calage_.C3.A0_gauche.29")}}</dt>
<dd>Opérateur binaire de décalage à gauche.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_binaires", ">>", "#.3E.3E_.28d.C3.A9calage_.C3.A0_droite_avec_propagation_du_signe.29")}}</dt>
<dd>Opérateur binaire de décalage à droite.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_binaires", ">>>", "#.3E.3E.3E_.28d.C3.A9calage_.C3.A0_droite_avec_insertion_de_z.C3.A9ros.29")}}</dt>
<dd>Opérateur binaire de décalage à droite non-signé.</dd>
</dl>
<h3 id="Opérateurs_binaires_logiques">Opérateurs binaires logiques</h3>
<p>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.</p>
<dl>
<dt>{{jsxref("Opérateurs/Opérateurs_binaires", "&", "#&_.28ET_binaire.29")}}</dt>
<dd>ET binaire (<em>AND</em>).</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_binaires", "|", "#|_.28OU_binaire.29")}}</dt>
<dd>OU binaire (<em>OR</em>).</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_binaires", "^", "#.5E_.28XOR_binaire.29")}}</dt>
<dd>OU exclusif binaire (<em>XOR</em>).</dd>
</dl>
<h3 id="Opérateurs_logiques">Opérateurs logiques</h3>
<p>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.</p>
<dl>
<dt>{{jsxref("Opérateurs/Opérateurs_logiques", "&&", "#ET_logique_.28&&.29")}}</dt>
<dd>ET logique (<em>AND</em>).</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_logiques", "||", "#OU_logique_.28||.29")}}</dt>
<dd>OU logique (<em>OR</em>).</dd>
</dl>
<h3 id="Opérateur_conditionnel_ternaire">Opérateur conditionnel ternaire</h3>
<dl>
<dt>{{jsxref("Opérateurs/L_opérateur_conditionnel", "(condition ? siVrai : siFaux)")}}</dt>
<dd>
<p>Cet opérateur renvoie une des deux valeurs fournie en fonction de la valeur logique de la condition.</p>
</dd>
</dl>
<h3 id="Opérateurs_d'affectation">Opérateurs d'affectation</h3>
<p>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.</p>
<dl>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "=", "#Assignment")}}</dt>
<dd>Opérateur d'affectation.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "*=", "#Multiplication_assignment")}}</dt>
<dd>Affectation après multiplication.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "/=", "#Division_assignment")}}</dt>
<dd>Affectation après division.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "%=", "#Remainder_assignment")}}</dt>
<dd>Affectation du reste.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "+=", "#Addition_assignment")}}</dt>
<dd>Affectation après addition.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "-=", "#Subtraction_assignment")}}</dt>
<dd>Affectation après soustraction.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "<<=", "#Left_shift_assignment")}}</dt>
<dd>Affectation après décalage à gauche.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", ">>=", "#Right_shift_assignment")}}</dt>
<dd>Affectation après décalage à droite.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", ">>>=", "#Unsigned_right_shift_assignment")}}</dt>
<dd>Affectation après décalage à droite non-signé.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "&=", "#Bitwise_AND_assignment")}}</dt>
<dd>Affectation après ET binaire.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "^=", "#Bitwise_AND_assignment")}}</dt>
<dd>Affectation après OU exclusif binaire.</dd>
<dt>{{jsxref("Opérateurs/Opérateurs_d_affectation", "|=","#Bitwise_OR_assignment")}}</dt>
<dd>Affectation après OU binaire.</dd>
<dt>{{jsxref("Opérateurs/Affecter_par_décomposition", "[a, b] = [1, 2]")}} {{jsxref("Opérateurs/Affecter_par_décomposition", "{a, b} = {a:1, b:2}")}}</dt>
<dd>
<p>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.</p>
</dd>
</dl>
<h3 id="Opérateur_virgule">Opérateur virgule</h3>
<dl>
<dt>{{jsxref("Opérateurs/L_opérateur_virgule", ",")}}</dt>
<dd>L'opérateur virgule permet d'évaluer plusieurs expressions en une seule instruction et de renvoyer le résultat de la dernière expression.</dd>
</dl>
<h3 id="Fonctionnalités_non-standardsnon-standard_inline">Fonctionnalités non-standards{{non-standard_inline}}</h3>
<dl>
<dt>{{non-standard_inline}}{{jsxref("Opérateurs/Expression_fermetures", "Expression de fermetures", "", 1)}}</dt>
<dd>La syntaxe d'expression de fermeture est un raccourci pour écrire des fonctions simples.</dd>
<dt>{{non-standard_inline}}{{jsxref("Opérateurs/Expression_fonction_génératrice_historique", "", 1)}}</dt>
<dd>Le mot-clé <code>function</code> peut être utilisé afin de définir une fonction génératrice historique. au sein d'une expression.</dd>
<dt>{{non-standard_inline}} {{jsxref("Opérateurs/Compréhensions_de_tableau", "[for (x of y) x]")}}</dt>
<dd>Compréhensions de tableau.</dd>
<dt>{{non-standard_inline}}{{jsxref("Opérateurs/Compréhensions_de_générateur", "(for (x of y) y)")}}</dt>
<dd>Compréhensions de générateurs.</dd>
</dl>
<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('ES1','#sec-11','Expressions')}}</td>
<td>{{Spec2('ES1')}}</td>
<td>Définition initiale.</td>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-11', 'Expressions')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-ecmascript-language-expressions', 'ECMAScript Language: Expressions')}}</td>
<td>{{Spec2('ES6')}}</td>
<td>Nouveaux éléments : opérateur de décomposition, affectation par décomposition, mot-clé <code>super</code> .</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-ecmascript-language-expressions', 'ECMAScript Language: Expressions')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
<p>{{Compat("javascript.operators")}}</p>
<h2 id="Voir_aussi">Voir aussi</h2>
<ul>
<li><a href="/fr/docs/JavaScript/Reference/Operators/Pr%C3%A9c%C3%A9dence_des_op%C3%A9rateurs">La précédence des opérateurs</a> en JavaScript</li>
</ul>
|