Addition (+)
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'opérateur d'addition (+) produit la somme de deux opérandes numériques ou la concaténation de deux chaînes de caractères.
Exemple interactif
console.log(2 + 2);
// Résultat attendu : 4
console.log(2 + true);
// Résultat attendu : 3
console.log("bonjour " + "à tous");
// Résultat attendu : "bonjour à tous"
console.log(2001 + " : L'Odyssée de l'espace");
// Résultat attendu : "2001 : L'Odyssée de l'espace"
Syntaxe
x + y
Description
L'opérateur + est surchargé pour deux opérations distinctes : l'addition numérique et la concaténation de chaînes de caractères. Lors de l'évaluation, il convertit d'abord les deux opérandes en valeurs primitives. Ensuite, les types des deux opérandes sont testés :
- Si l'un des côtés est une chaîne de caractères, l'autre opérande est également converti en chaîne de caractères, puis les deux chaînes de caractères sont concaténées.
- Si les deux opérandes sont des grands entiers, une addition de grands entiers est effectuée. Si l'un des côtés est un grand entier, mais pas l'autre, une exception
TypeErrorest levée. - Sinon, les deux côtés sont convertis en nombres, puis une addition numérique est effectuée.
La concaténation de chaînes de caractères est souvent considérée comme équivalente aux littéraux gabarits ou à String.prototype.concat(), mais ce n'est pas le cas. L'addition convertit l'expression sous contrainte en une valeur primitive, ce qui appelle valueOf() en priorité ; en revanche, les littéraux gabarits et concat() convertissent l'expression sous contrainte en une chaîne de caractères, ce qui appelle toString() en priorité. Si l'expression possède une méthode [Symbol.toPrimitive](), la concaténation de chaînes de caractères l'appelle avec "default" comme indication, tandis que les littéraux gabarits utilisent "string". Ce point est important pour les objets qui possèdent des représentations différentes sous forme de chaîne de caractères et de valeur primitive — comme Temporal, dont les méthodes valueOf() des objets lèvent toutes une exception.
const t = Temporal.Now.instant();
"" + t; // Throws TypeError
`${t}`; // '2022-07-31T04:48:56.113918308Z'
"".concat(t); // '2022-07-31T04:48:56.113918308Z'
Il est déconseillé d'utiliser "" + x pour effectuer une conversion en chaîne de caractères.
Exemples
>Additionner des nombres
1 + 2; // 3
Les autres valeurs qui ne sont pas des chaînes de caractères, pas des grands entiers sont converties en nombres :
true + 1; // 2
false + false; // 0
Additionner des grands entiers
1n + 2n; // 3n
Vous ne pouvez pas mélanger des opérandes de type BigInt et number lors de l'addition. null, undefined et les valeurs booléennes sont converties en nombres et sont également interdites.
1n + 2; // TypeError: Cannot mix BigInt and other types, use explicit conversions
2 + 1n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
Les chaînes de caractères ont la priorité sur les autres types, donc ajouter une chaîne de caractères à un BigInt produit une concaténation de chaînes de caractères plutôt qu'une TypeError.
"1" + 2n; // "12"
Pour effectuer une addition avec un BigInt et un non-BigInt, convertissez l'un des opérandes :
1n + BigInt(2); // 3n
Number(1n) + 2; // 3
Additionner des chaînes de caractères
Si l'un des opérandes est une chaîne de caractères, l'autre est converti en chaîne de caractères et ils sont concaténés :
"toto" + "truc"; // "tototruc"
5 + "toto"; // "5toto"
"toto" + false; // "totofalse"
"2" + 2; // "22"
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification> # sec-addition-operator-plus> |
Compatibilité des navigateurs
Voir aussi
- L'opérateur de Soustraction (
-) - L'opérateur de Division (
/) - L'opérateur de Multiplication (
*) - L'opérateur de Reste (
%) - L'opérateur de Exponentiation (
**) - L'opérateur de Incrément (
++) - L'opérateur de Décrément (
--) - L'opérateur de Négation unaire (
-) - L'opérateur d'Addition unaire (
+)