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

js
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.

js
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

js
1 + 2; // 3

Andere Werte, die weder Strings noch BigInts sind, werden in Zahlen umgewandelt:

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

Addition mit BigInts

js
1n + 2n; // 3n

Sie können BigInt- und numerische Operanden nicht mischen.

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
"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:

js
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:

js
"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 GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Addition (+)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch