Addition (+)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Der Addition-Operator (+
) erzeugt die Summe von numerischen Operanden oder eine String-Verkettung.
Probieren Sie es aus
console.log(2 + 2);
// Expected output: 4
console.log(2 + true);
// Expected output: 3
console.log("hello " + "everyone");
// Expected output: "hello everyone"
console.log(2001 + ": A Space Odyssey");
// Expected output: "2001: A Space Odyssey"
Syntax
x + y
Beschreibung
Der +
-Operator ist überladen für zwei unterschiedliche Operationen: numerische Addition und String-Verkettung. Bei der Auswertung werden zuerst beide Operanden in Primitive umgewandelt. Anschließend werden die Typen der beiden Operanden überprüft:
- Wenn eine Seite ein String ist, wird der andere Operand ebenfalls in einen String umgewandelt, und sie werden verknüpft.
- Wenn beide Operanden BigInts sind, wird eine BigInt-Addition durchgeführt. Ist eine Seite ein BigInt, die andere jedoch nicht, wird ein
TypeError
ausgelöst. - Andernfalls werden beide Seiten in Zahlen umgewandelt, und eine numerische Addition wird durchgeführt.
String-Verkettung wird oft als äquivalent zu Template-Literalen oder String.prototype.concat()
betrachtet, was jedoch nicht der Fall ist. Addition zwingt den Ausdruck zu einem Primitiv, wodurch valueOf()
mit höherer Priorität aufgerufen wird; hingegen zwingen Template-Literale und concat()
den Ausdruck zu einem String, wodurch toString()
mit Priorität aufgerufen wird. Falls der Ausdruck eine [Symbol.toPrimitive]()
-Methode hat, nutzt die String-Verkettung "default"
als Hinweis, während Template-Literale "string"
verwenden. Dies ist wichtig für Objekte mit unterschiedlichen Repräsentationen für String und Primitives — wie Temporal, dessen valueOf()
-Methode einen Fehler auslöst.
const t = Temporal.Now.instant();
"" + t; // Throws TypeError
`${t}`; // '2022-07-31T04:48:56.113918308Z'
"".concat(t); // '2022-07-31T04:48:56.113918308Z'
Sie sollten davon absehen, "" + x
zu verwenden, um eine String-Umwandlung durchzuführen.
Beispiele
Addition mit Zahlen
1 + 2; // 3
Andere Werte, die weder Strings noch BigInts sind, werden in Zahlen umgewandelt:
true + 1; // 2
false + false; // 0
Addition mit BigInts
1n + 2n; // 3n
Sie können BigInt- und numerische Operanden nicht mischen.
1n + 2; // TypeError: Cannot mix BigInt and other types, use explicit conversions
2 + 1n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
"1" + 2n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
Um eine Addition mit einem BigInt und einem nicht BigInt durchzuführen, konvertieren Sie einen der Operanden:
1n + BigInt(2); // 3n
Number(1n) + 2; // 3
Addition mit Strings
Wenn einer der Operanden ein String ist, wird der andere in einen String umgewandelt, und sie werden verknüpft:
"foo" + "bar"; // "foobar"
5 + "foo"; // "5foo"
"foo" + false; // "foofalse"
"2" + 2; // "22"
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-addition-operator-plus |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Addition ( + ) |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support