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 Zahloperanden oder eine Zeichenkettenkonkatenation.

Probieren Sie es aus

Syntax

js
x + y

Beschreibung

Der + Operator ist für zwei verschiedene Operationen überladen: numerische Addition und Zeichenkettenkonkatenation. Bei der Auswertung zwingt er zunächst beide Operanden zu Primitiven. Dann werden die Typen der beiden Operanden getestet:

  • Wenn eine Seite eine Zeichenkette ist, wird der andere Operand auch in eine Zeichenkette umgewandelt und sie werden verknüpft.
  • Wenn beide BigInts sind, wird eine BigInt-Addition durchgeführt. Wenn eine Seite ein BigInt ist, die andere aber nicht, wird ein TypeError ausgelöst.
  • Andernfalls werden beide Seiten in Zahlen umgewandelt, und es wird eine numerische Addition durchgeführt.

Zeichenkettenkonkatenation wird oft als äquivalent zu Template-Literalen oder String.prototype.concat() angesehen, aber sie sind es nicht. Die Addition zwingt den Ausdruck zu einem Primitive, welches priorisiert valueOf() aufruft; auf der anderen Seite zwingen Template-Literale und concat() den Ausdruck zu einer String, welches priorisiert toString() aufruft. Wenn der Ausdruck eine [Symbol.toPrimitive]() Methode hat, ruft die Zeichenkettenkonkatenation diese mit dem Hinweis "default" auf, während Template-Literale "string" verwenden. Dies ist wichtig für Objekte, die unterschiedliche String- und Primitive-Darstellungen haben — wie Temporal, dessen valueOf() Methode eine Ausnahme 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'

Es wird empfohlen, nicht "" + x zur Durchführung von String-Koerzierung zu verwenden.

Beispiele

Addition mit Zahlen

js
1 + 2; // 3

Andere nicht-String, nicht-BigInt-Werte werden in Zahlen umgewandelt:

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

Addition mit BigInts

js
1n + 2n; // 3n

Sie können BigInt und Zahl-Operanden bei der Addition 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 Zeichenketten

Wenn einer der Operanden eine Zeichenkette ist, wird der andere in eine Zeichenkette umgewandelt und sie werden verknüpft:

js
"foo" + "bar"; // "foobar"
5 + "foo"; // "5foo"
"foo" + false; // "foofalse"
"2" + 2; // "22"

Spezifikationen

Specification
ECMAScript Language Specification
# sec-addition-operator-plus

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch