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 var2
. Un 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.
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 +function(val){ return val; } // NaN
Spécifications
Spécification | État | 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 | 52.0 | Nightly build | ? | ? | ? |
Fonctionnalité | Android | Webview Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) | (Oui) |
Opérateur d'exponentiation | ? | ? | Nightly build | ? | ? | ? |