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

Addition (+) - 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

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'oprateur d'addition (+) produit la somme de deux oprandes numriques ou la concatnation de deux chanes de caractres.

Dans cet article

Exemple interactif

console.log(2 + 2);
// Rsultat attendu : 4

console.log(2 + true);
// Rsultat attendu : 3

console.log("bonjour " + " tous");
// Rsultat attendu : "bonjour  tous"

console.log(2001 + " : L'Odysse de l'espace");
// Rsultat attendu : "2001 : L'Odysse de l'espace"

Syntaxe

js
x + y

Description

L'oprateur + est surcharg pour deux oprations distinctes : l'addition numrique et la concatnation de chanes de caractres. Lors de l'valuation, il convertit d'abord les deux oprandes en valeurs primitives. Ensuite, les types des deux oprandes sont tests :

  • Si l'un des cts est une chane de caractres, l'autre oprande est galement converti en chane de caractres, puis les deux chanes de caractres sont concatnes.
  • Si les deux oprandes sont des grands entiers, une addition de grands entiers est effectue. Si l'un des cts est un grand entier, mais pas l'autre, une exception TypeError est leve.
  • Sinon, les deux cts sont convertis en nombres, puis une addition numrique est effectue.

La concatnation de chanes de caractres est souvent considre comme quivalente aux littraux 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 littraux gabarits et concat() convertissent l'expression sous contrainte en une chane de caractres, ce qui appelle toString() en priorit. Si l'expression possde une mthode [Symbol.toPrimitive](), la concatnation de chanes de caractres l'appelle avec "default" comme indication, tandis que les littraux gabarits utilisent "string". Ce point est important pour les objets qui possdent des reprsentations diffrentes sous forme de chane de caractres et de valeur primitive comme Temporal, dont les mthodes valueOf() des objets lvent toutes une exception.

js
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 dconseill d'utiliser "" + x pour effectuer une conversion en chane de caractres.

Exemples

Additionner des nombres

js
1 + 2; // 3

Les autres valeurs qui ne sont pas des chanes de caractres, pas des grands entiers sont converties en nombres :

js
true + 1; // 2
false + false; // 0

Additionner des grands entiers

js
1n + 2n; // 3n

Vous ne pouvez pas mlanger des oprandes de type BigInt et number lors de l'addition. null, undefined et les valeurs boolennes sont converties en nombres et sont galement interdites.

js
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 chanes de caractres ont la priorit sur les autres types, donc ajouter une chane de caractres un BigInt produit une concatnation de chanes de caractres plutt qu'une TypeError.

js
"1" + 2n; // "12"

Pour effectuer une addition avec un BigInt et un non-BigInt, convertissez l'un des oprandes :

js
1n + BigInt(2); // 3n
Number(1n) + 2; // 3

Additionner des chanes de caractres

Si l'un des oprandes est une chane de caractres, l'autre est converti en chane de caractres et ils sont concatns :

js
"toto" + "truc"; // "tototruc"
5 + "toto"; // "5toto"
"toto" + false; // "totofalse"
"2" + 2; // "22"

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-addition-operator-plus

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page