[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators [Back]  [Original]

Expressions et oprateurs - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

Expressions et oprateurs

Ce chapitre documente l'ensemble des oprateurs, expressions et mots-cls pour le langage JavaScript.

Dans cet article

Expressions et oprateurs par catgorie

Pour une liste trie par ordre alphabtique, voir sur la barre de navigation gauche.

Expressions primaires

Les mots-cls de base et les expressions gnrales en JavaScript. Ces expressions ont la plus haute priorit (plus leve que celle des oprateurs).

this

Le mot-cl this fait rfrence une proprit spciale d'un contexte d'excution.

Littraux

Littraux de base null, boolens, nombres et chanes de caractres.

[]

Syntaxe d'initialisation/littrale d'un tableau.

{}

Syntaxe d'initialisation/littrale d'un objet.

function

Le mot-cl function dfinit une expression de fonction.

class

Le mot-cl class dfinit une expression de classe.

function*

Le mot-cl function* dfinit une expression de fonction gnratrice.

async function

Le mot-cl async function dfinit une expression de fonction asynchrone.

async function*

Les mots-cls async function* dfinissent une expression de fonction gnratrice asynchrone.

/ab+c/i

Syntaxe littrale des expressions rgulires.

`string`

Syntaxe des littraux gabarits.

( )

Oprateur de regroupement.

Expression vers la gauche

Les valeurs situes gauche sont la cible de l'affectation.

Accesseurs de proprit

Les oprateurs d'accs aux membres permettent d'accder une proprit ou une mthode d'un objet (object.property et object["property"]).

?.

L'oprateur de chanage optionnel retourne undefined au lieu de provoquer une erreur si une rfrence est &quivalent nulle (null ou undefined).

new

L'oprateur new cre une instance d'un constructeur.

new.target

Dans les constructeur, new.target fait rfrence au constructeur qui est invoqu par new.

import.meta

Un objet exposant des mtadonnes spcifiques au contexte un module JavaScript.

super

Le mot-cl super appelle le constructeur parent ou permet d'accder aux proprits de l'objet parent.

import()

La syntaxe import() permet de charger un module de manire asynchrone et dynamique dans un environnement qui n'est pas ncessairement un module.

Incrmentation et dcrmentation

Des oprateurs prfixes ou suffixes pour incrmenter/dcrmenter.

A++

L'oprateur d'incrmentation suffixe.

A--

L'oprateur de dcrmentation suffixe.

++A

L'oprateur d'incrmentation prfixe.

--A

L'oprateur de dcrmentation prfixe.

Oprateurs unaires

Une opration unaire est une opration qui ne manipule qu'un seul oprande.

delete

L'oprateur delete supprime une proprit dans un objet.

void

L'oprateur void value une expression et ignore sa valeur de retour.

typeof

L'oprateur typeof dtermine le type d'un objet donn.

+

L'oprateur plus unaire convertit son oprande en type Number.

-

L'oprateur de ngation unaire convertit son oprande en type Number, puis le rend ngatif.

~

L'oprateur NOT binaire.

!

L'oprateur NOT logique.

await

Met en pause puis reprend une fonction asynchrone et attend que la promesse soit complte/rompue.

Oprateurs arithmtiques

Les oprateurs arithmtiques prennent des valeurs numriques (littraux ou variables) comme oprandes et retournent une seule valeur numrique.

**

L'oprateur d'exponentiation.

*

L'oprateur de multiplication.

/

L'oprateur de division.

%

L'oprateur de reste.

+ (Plus)

L'oprateur d'addition.

-

L'oprateur de soustraction.

Oprateurs relationnels

Un oprateur de comparaison compare ses oprandes et renvoie une valeur boolenne en fonction de la vrit de cette comparaison.

< (Moins que)

L'oprateur d'infriorit stricte.

> (Plus que)

L'oprateur de supriorit stricte.

<=

L'oprateur d'infriorit.

>=

L'oprateur de supriorit.

instanceof

L'oprateur instanceof dtermine si un objet est une instance d'un autre objet.

in

L'oprateur in dtermine la prsence d'une proprit donne au sein d'un objet.

Note : => n'est pas un oprateur, mais la notation utilise pour les fonctions flches.

Oprateurs d'galit

Le rsultat de l'valuation fournie par un oprateur d'galit est toujours un boolen, fonction de la vrit de la comparaison effectue.

==

L'oprateur d'galit.

!=

L'oprateur d'ingalit.

===

L'oprateur d'galit stricte.

!==

L'oprateur d'ingalit stricte.

Oprateurs de dcalage binaires

Ces oprations permettent de dcaler les bits de la reprsentation binaire de l'oprande.

<<

L'oprateur de dcalage binaire gauche.

>>

L'oprateur de dcalage binaire droite.

>>>

L'oprateur de dcalage binaire droite non sign.

Oprateurs binaires boolens

Les oprateurs binaires traitent leurs oprandes comme un ensemble de 32 bits (zros et uns) et retournent des valeurs numriques standard en JavaScript.

&

ET/AND binaire.

|

OU/OR binaire.

^

OU exclusif/XOR binaire.

Oprateurs logiques

Les oprateurs logiques manipulent des valeurs boolennes (logiques) et ont un comportement de court-circuit.

&&

ET/AND logique.

||

OU/OR logique.

??

L'oprateur de coalescence des nuls.

Oprateur conditionnel (ternaire)

(condition ? ifTrue : ifFalse)

L'oprateur conditionnel retourne une valeur parmi deux selon la valeur logique de la condition porte par le premier oprande.

Oprateurs d'affectation

Un oprateur d'affectation permet d'affecter une valeur son oprande gauche en fonction de la valeur de son oprande droit.

=

L'oprateur d'affectation.

*=

L'oprateur de multiplication et d'affectation.

/=

L'oprateur de division et d'affectation.

%=

L'oprateur de reste et d'affectation.

+=

L'oprateur d'addition et d'affectation.

-=

L'oprateur de soustraction et d'affectation.

<<=

L'oprateur de dcalage binaire gauche et d'affectation.

>>=

L'oprateur de dcalage binaire droite et d'affectation.

>>>=

L'oprateur de dcalage binaire droite non sign et d'affectation.

&=

L'oprateur ET/AND binaire et d'affectation.

^=

L'oprateur OU exclusif/XOR binaire et d'affectation.

|=

L'oprateur OU/OR binaire et d'affectation.

**=

L'oprateur d'exponentiation et d'affectation.

&&=

L'oprateur ET/AND logique et d'affectation.

||=

L'oprateur OU/OR logique et d'affectation.

??=

L'oprateur de coalescence des nuls et d'affectation.

[a, b] = arr, { a, b } = obj

L'affectation par dstructuration permet d'assigner les proprits d'un tableau ou d'un objet des variables en utilisant une syntaxe qui ressemble celle des littraux de tableau ou d'objet.

Les oprateurs de gnrateur

yield

Met en pause et reprend une fonction gnratrice.

yield*

Dlgue une autre fonction gnratrice ou un objet itrable.

La syntaxe de propagation

...obj

La syntaxe de propagation permet un itrable, tel qu'un tableau ou une chane de caractres, d'tre dvelopp dans des endroits o zro ou plusieurs arguments (pour les appels de fonction) ou lments (pour les littraux de tableau) sont attendus. Dans un littral d'objet, la syntaxe de propagation numre les proprits d'un objet et ajoute les paires cl-valeur l'objet en cours de cration.

Oprateur virgule

,

L'oprateur virgule permet d'valuer plusieurs expressions dans une seule instruction et retourne le rsultat de la dernire expression.

Que sont les oprateurs ?

Comme l'explique la section Que sont les instructions, les dclarations et les expressions ?, une expression est un lment fondamental qui s'value en une valeur. Les instructions, les dclarations et les expressions peuvent toutes dfinir des emplacements prcis o les expressions sont acceptes. Lorsqu'une expression contient des emplacements pour d'autres expressions imbriques, les parties qui ne sont pas des emplacements sont appeles des oprateurs.

Par exemple, la syntaxe d'une expression appele addition est expression + expression (si vous consultez la spcification, les oprandes sont appels expression additive et expression multiplicative, qui sont tous deux des sous-ensembles d'expression, mais il s'agit du mcanisme de la spcification pour dfinir la priorit et l'associativit, ce qui ne concerne pas notre propos). En dehors des deux emplacements d'expression, l'entit de code introduite est simplement + : le terme oprateur d'addition. De mme, la syntaxe de l'expression de production est yield expression, donc yield est appel l'oprateur. Autrement dit, chaque oprateur correspond une expression.

MDN considre galement les expressions sans emplacements, comme null, comme des oprateurs selon la dfinition ci-dessus, bien que nous les appelions presque toujours  syntaxe  ou  expression .

Une expression n'a pas besoin de prendre un nombre fixe d'emplacements. Par exemple, l'expression littrale de tableau [expression, expression, expression] peut prendre un nombre arbitraire d'emplacements d'expression. La partie [,,] peut tre appele un  oprateur . Le MDN vite cet usage, mais vous pouvez le rencontrer dans des langages de programmation fonctionnelle comme Haskell (angl.).

La dfinition des oprateurs devient moins prcise avec certaines autres entits de code : que se passe-t-il si une expression possde un emplacement qui n'est pas une expression, ou si une entit de code combine une expression ne forme pas une expression ? Appelons-nous tout de mme cette entit de code un oprateur ?

  • Dans l'expression du chanage optionnel toto?.truc, toto est une expression, mais truc doit tre un identifiant et ne s'value pas en une valeur. Considrons-nous toujours ?. comme un oprateur ?
  • Dans l'expression de la fonction flche arg => body, body peut tre une expression (bien qu'il puisse galement s'agir d'un corps de bloc), et arg est simplement une liste d'arguments. Considrons-nous toujours => comme un oprateur ?
  • Dans la syntaxe de propagation ...toto, toto est une expression, mais l'ensemble n'est pas une expression, car il ne s'value pas en une valeur il n'a de sens que dans certaines autres expressions comme les appels de fonction, les littraux de tableau et les littraux d'objet. Considrons-nous toujours ... comme un oprateur ?

Le terme  oprateur  n'est pas dfini avec prcision en JavaScript, donc MDN ne donne pas de rponse dfinitive. Nous regroupons toutes ces constructions sous  Oprateurs , mais nous vitons de les dsigner officiellement comme des oprateurs. De nombreux concepts utiles concernant les oprateurs, comme la priorit, s'appliquent tout de mme ces constructions, quelle que soit leur nature exacte.

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# prod-SpreadElement
ECMAScript 2027 LanguageSpecification
# prod-ArgumentList
ECMAScript 2027 LanguageSpecification
# prod-PropertyDefinition
ECMAScript 2027 LanguageSpecification
# sec-multiplicative-operators
ECMAScript 2027 LanguageSpecification
# sec-assignment-operators
ECMAScript 2027 LanguageSpecification
# sec-unary-minus-operator
ECMAScript 2027 LanguageSpecification
# sec-built-in-function-objects
ECMAScript 2027 LanguageSpecification
# sec-async-function-definitions
ECMAScript 2027 LanguageSpecification
# sec-typeof-operator
ECMAScript 2027 LanguageSpecification
# prod-LogicalANDExpression
ECMAScript 2027 LanguageSpecification
# prod-BitwiseXORExpression
ECMAScript 2027 LanguageSpecification
# prod-FormalParameters
ECMAScript 2027 LanguageSpecification
# sec-signed-right-shift-operator
ECMAScript 2027 LanguageSpecification
# sec-addition-operator-plus
ECMAScript 2027 LanguageSpecification
# sec-object-initializer
ECMAScript 2027 LanguageSpecification
# sec-equality-operators
ECMAScript 2027 LanguageSpecification
# prod-ComputedPropertyName
ECMAScript 2027 LanguageSpecification
# sec-comma-operator
ECMAScript 2027 LanguageSpecification
# sec-class-definitions
ECMAScript 2027 LanguageSpecification
# sec-destructuring-assignment
ECMAScript 2027 LanguageSpecification
# sec-import-calls
ECMAScript 2027 LanguageSpecification
# sec-relational-operators
ECMAScript 2027 LanguageSpecification
# sec-conditional-operator
ECMAScript 2027 LanguageSpecification
# sec-unsigned-right-shift-operator
ECMAScript 2027 LanguageSpecification
# sec-property-accessors
ECMAScript 2027 LanguageSpecification
# prod-OptionalExpression
ECMAScript 2027 LanguageSpecification
# sec-bitwise-not-operator
ECMAScript 2027 LanguageSpecification
# prod-AssignmentRestElement
ECMAScript 2027 LanguageSpecification
# sec-generator-function-definitions
ECMAScript 2027 LanguageSpecification
# prod-MethodDefinition
ECMAScript 2027 LanguageSpecification
# sec-generator-function-definitions-runtime-semantics-evaluation
ECMAScript 2027 LanguageSpecification
# sec-null-value
ECMAScript 2027 LanguageSpecification
# sec-grouping-operator
ECMAScript 2027 LanguageSpecification
# sec-unary-plus-operator
ECMAScript 2027 LanguageSpecification
# sec-function-definitions
ECMAScript 2027 LanguageSpecification
# sec-this-keyword
ECMAScript 2027 LanguageSpecification
# prod-BitwiseORExpression
ECMAScript 2027 LanguageSpecification
# sec-left-shift-operator
ECMAScript 2027 LanguageSpecification
# prod-LogicalORExpression
ECMAScript 2027 LanguageSpecification
# sec-postfix-decrement-operator
ECMAScript 2027 LanguageSpecification
# sec-postfix-increment-operator
ECMAScript 2027 LanguageSpecification
# sec-destructuring-binding-patterns
ECMAScript 2027 LanguageSpecification
# prod-AssignmentRestProperty
ECMAScript 2027 LanguageSpecification
# sec-logical-not-operator
ECMAScript 2027 LanguageSpecification
# sec-subtraction-operator-minus
ECMAScript 2027 LanguageSpecification
# sec-async-generator-function-definitions
ECMAScript 2027 LanguageSpecification
# prod-ImportMeta
ECMAScript 2027 LanguageSpecification
# prod-CoalesceExpression
ECMAScript 2027 LanguageSpecification
# prod-BitwiseANDExpression
ECMAScript 2027 LanguageSpecification
# sec-delete-operator
ECMAScript 2027 LanguageSpecification
# sec-new-operator
ECMAScript 2027 LanguageSpecification
# prod-YieldExpression
ECMAScript 2027 LanguageSpecification
# sec-super-keyword
ECMAScript 2027 LanguageSpecification
# sec-exp-operator
ECMAScript 2027 LanguageSpecification
# sec-void-operator
HTML
# integration-with-the-javascript-module-system
HTML
# import-meta-resolve
Source Phase Imports
# sec-left-hand-side-expressions
Deferred Imports Evaluation
# sec-left-hand-side-expressions

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page