Opérateurs arithmétiques

Les opérateurs arithmétiques utilisent des valeurs numériques (variables ou littéraux) comme opérandes et renvoient une valeur numérique. Les opérateurs arithmétiques standard sont l'addition (+), la soustraction (-), la multiplication (*), et la division (/).

Addition (+)

L'opérateur d'addition permet d'obtenir la somme des opérandes numériques ou bien la concaténation de chaînes de caractères.

Syntaxe

Opérateur : x + y

Exemples

 concaténation
"toto" + false // "totofalse"

// chaîne de caractères + chaîne de caractères -> concaténation
"toto" + "truc" // "tototruc"

Soustraction (-)

L'opérateur de soustraction soustrait les deux opérandes pour obtenir leur différence.

Syntaxe

Opérateur : x - y

Exemples

5 - 3 // 2
3 - 5 // -2
"toto" - 3 // NaN

Division (/)

L'opérateur de division produit le quotient de ces opérandes avec l'opérande gauche comme numérateur et l'opérande droit comme dénominateur.

Syntaxe

Opérateur : x / y

Exemples

1 / 2      // renvoie 0.5 en JavaScript
1 / 2      // renvoie 0 en Java 
// (aucun des deux opérandes n'est un nombre flottant de façon explicite)

1.0 / 2.0  // renvoie 0.5 en JavaScript et Java

2.0 / 0    // renvoie Infinity (pour l'infini) en JavaScript
2.0 / 0.0  // renvoie Infinity également
2.0 / -0.0 // renvoie -Infinity en JavaScript

Multiplication (*)

L'opérateur de multiplication permet d'obtenir le produit des opérandes.

Syntaxe

Opérateur : x * y

Exemples

2 * 2 // 4
-2 * 2 // -4
Infinity * 0 // NaN
Infinity * Infinity // Infinity
"toto" * 2 // NaN

Reste (%)

L'opérateur « reste » renvoie le reste de la division du premier opérande par le second. Le résultat obtenu a toujours le signe du numérateur (la quantité divisée). Cela correspond à var1 modulo var2, avec var1 et var2 étant des variables. La fonction modulo est le reste entier de la division de var1 par var2Un opérateur modulo véritable fait l'objet d'une proposition pour une future version d'ECMAScript. La différence avec l'opérateur de modulo est que le signe du résultat sera celui du dénominateur (la quantité qui divise) et non celui du numérateur.

Syntaxe

Opérateur : var1 % var2

Exemples

12 % 5  // 2
-1 % 2  // -1
NaN % 2 // NaN
1 % 2   // 1
2 % 3   // 2
-4 % 2  // -0
5.5 % 2 // 1.5

Exponentiation (**)

Cette fonctionnalité fait partie des propositions pour Harmony (ECMAScript7) et est donc expérimentale.
Cette spécification technique n'a pas encore été stabilisée, veuillez consulter le tableau de compatibilité pour plus d'informations sur les éventuelles différences entre les navigateurs. Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur, en fonction des évolutions de la spécification.

L'opérateur d'exponentiation (aussi appelé opérateur de puissance) renvoie le résultat de l'élévation d'un nombre (premier opérande) à une puissance donnée (deuxième opérande). Par exemple : var1 ** var2 sera équivalent à var1var2 en notation mathématique. Cet opérateur est associatif à droite, autrement dit a ** b ** c est égal à a ** (b ** c).
 

Syntaxe

Opérateur : var1 ** var2

Notes

Dans la plupart des langages (par exemple PHP, Python, etc.), l'opérateur d'exponentiation est défini avec une précédence supérieure à celle des opérateurs unaires tels que le plus unaire et le moins unaire. Des exceptions existent comme Bash où l'opérateur ** a une précédence inférieure à celle des opérateurs unaires. En JavaScript, il est impossible d'écrire une expression ambigüe avec l'exponentiation : il est impossible de placer un opérateur unaire juste avant le nombre.

-2 ** 2;
// vaut 4 en Bash ou -4 avec d'autres langage
// C'est invalide en JavaScript car il y 
// une ambiguïté liée à l'expression

- (2 ** 2);
// -4 en JavaScript car les parenthèses lèvent
// l'ambiguïté

Exemples

2 ** 3 // 8
3 ** 2 // 9
3 ** 2.5 // 15.588457268119896
10 ** -1 // 0.1
NaN ** 2 // NaN

2 ** 3 ** 2 // 512
2 ** (3 ** 2) // 512
(2 ** 3) ** 2 // 64

Incrément (++)

L'opérateur d'incrément ajoute une unité à son opérande et renvoie une valeur.

  • Si l'opérateur est utilisé en suffixe (par exemple : x++), il renvoie la valeur avant l'incrémentation.
  • Si l'opérateur est utilisé en préfixe (par exemple : ++x), il renvoie la valeur après l'incrémentation.

Syntaxe

Opérateur : x++ ou ++x

Exemples

// Suffixe
var x = 3;
y = x++; // y = 3, x = 4

// Préfixe
var a = 2;
b = ++a; // a = 3, b = 3

Décrément (--)

L'opérateur de décrément soustrait une unité à son opérande et renvoie une valeur.

  • Si l'opérateur est utilisé en suffixe (par exemple : x--), il renvoie la valeur avant la décrémentation.
  • Si l'opérateur est utilisé en préfixe (par exemple : --x), il renvoie la valeur après la décrémentation.

Syntaxe

Opérateur : x-- ou --x

Exemples

// Suffixe
var x = 3;
y = x--; // y = 3, x = 2

// Préfixe
var a = 2;
b = --a; // a = 1, b = 1

Négation unaire (-)

L'opérateur de négation unaire précède son opérande et prend son opposé.

Syntaxe

Opérateur : -x

Exemples

var x = 3;
y = -x; // y = -3, x = 3

Plus unaire (+)

L'opérateur unaire plus (+) précède son opérande, l'évaluation correspond à son opérande, converti en nombre si possible et si ce n'est pas déjà un nombre. Bien que l'opérateur de négation unaire (-) puisse également convertir les expressions qui ne sont pas des nombres, le plus unaire est la méthode la plus efficace et celle la plus utilisée pour convertir quelque chose en un nombre car la conversion est la seule opération effectuée. Cet opérateur permet de convertir les chaînes de caractères représentant des nombres entiers, des nombres flottants ainsi que les valeurs true, false, et null. Les entiers, représentés sous forme décimale ou hexadécimale (préfixés par "0x"), sont supportés. Les nombres négatifs sont également supportés (mais pas au format hexadécimal). Si l'opérateur ne peut pas analyser l'opérande fourni, il sera évalué à NaN.

Syntaxe

Opérator : +x

Exemples

+3     // 3
+"3"   // 3
+true  // 1
+false // 0
+null  // 0

Spécifications

Spécification Statut Commentaires
ECMAScript 1st Edition (ECMA-262) Standard Définition initiale
ECMAScript 5.1 (ECMA-262) Standard Définis au sein de plusieurs sections de cette spécification : Opérateurs additifs, opérateurs multiplicatifs, expressions postfixes, opérateurs unaires.
ECMAScript 2015 (6th Edition, ECMA-262) Standard Définis au sein de plusieurs sections de cette spécification : Opérateurs additifs, opérateurs multiplicatifs, expressions postfixes, opérateurs unaires.
ECMAScript 2016 (ECMA-262) Standard Ajout de l'opérateur d'exponentiation.
ECMAScript 2017 Draft (ECMA-262) Projet  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui)
Opérateur d'exponentiation ? Nightly build ? ? ?
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)
Opérateur d'exponentiation ? ? Nightly build ? ? ?

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, alexisdelee, teoli, Jeremie, Mgjbot, BenoitL
 Dernière mise à jour par : SphinxKnight,