Thanks to visit codestin.com
Credit goes to developer.mozilla.org

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Addition (+)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

Der Addition (+) Operator ergibt die Summe numerischer Operanden oder eine Zeichenfolgen-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 für zwei unterschiedliche Operationen überladen: numerische Addition und Zeichenfolgen-Verkettung. Bei der Auswertung werden beide Operanden zuerst in Primitive umgewandelt. Dann werden die Typen der beiden Operanden überprüft:

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

Zeichenfolgen-Verkettung wird oft als äquivalent zu Template-Literalen oder String.prototype.concat() angesehen, aber das ist nicht der Fall. Bei der Addition wird der Ausdruck zu einem Primärwert umgewandelt, wobei valueOf() mit Priorität aufgerufen wird; Template-Literale und concat() wandeln den Ausdruck hingegen in eine Zeichenfolge um, wobei toString() mit Priorität aufgerufen wird. Wenn der Ausdruck eine [Symbol.toPrimitive]() Methode hat, ruft die Zeichenfolgen-Verkettung diese mit "default" als Hinweis auf, während Template-Literale "string" verwenden. Das ist wichtig für Objekte, die unterschiedliche Zeichenfolgen- und Primärwertdarstellungen haben — wie zum Beispiel Temporal, deren valueOf()-Methoden alle einen Fehler werfen.

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 zu verwenden, um eine Zeichenfolgenumwandlung durchzuführen.

Beispiele

Addition unter Verwendung von Zahlen

js
1 + 2; // 3

Andere Werte, die keine Zeichenfolgen oder BigInts sind, werden in Zahlen umgewandelt:

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

Addition unter Verwendung von BigInts

js
1n + 2n; // 3n

Sie können in der Addition keine BigInt- und Zahlen-Operanden 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 unter Verwendung von Zeichenfolgen

Wenn einer der Operanden eine Zeichenfolge ist, wird der andere in eine Zeichenfolge umgewandelt und sie werden verkettet:

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

Spezifikationen

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

Browser-Kompatibilität

Siehe auch