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

Addition (+) - JavaScript | MDN

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 Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.

Der Addition (+) Operator erzeugt die Summe numerischer Operanden oder eine Zeichenfolgenverkettung.

In diesem Artikel

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 fr zwei unterschiedliche Operationen berladen: numerische Addition und Zeichenfolgenverkettung. Bei der Auswertung werden zunchst beide Operanden zu Primitiven konvertiert. Danach werden die Typen der beiden Operanden geprft:

  • Wenn eine Seite eine Zeichenfolge ist, wird der andere Operand ebenfalls in eine Zeichenfolge umgewandelt und sie werden verkettet.
  • Wenn beide BigInts sind, wird eine BigInt-Addition durchgefhrt. Wenn eine Seite ein BigInt ist, die andere jedoch nicht, wird ein TypeError ausgelst.
  • Andernfalls werden beide Seiten in Zahlen konvertiert, und es wird eine numerische Addition durchgefhrt.

Die Zeichenfolgenverkettung wird oft als gleichwertig mit Template-Literalen oder String.prototype.concat() angesehen, aber sie sind es nicht. Die Addition zwingt den Ausdruck zu einem primitiven, was valueOf() mit Prioritt aufruft; hingegen zwingen Template-Literale und concat() den Ausdruck in eine Zeichenfolge, was toString() mit Prioritt aufruft. Wenn der Ausdruck eine [Symbol.toPrimitive]() Methode hat, ruft die Zeichenfolgenverkettung sie mit dem Hinweis "default" auf, whrend Template-Literale "string" verwenden. Dies ist wichtig fr Objekte, die unterschiedliche Zeichenfolgen- und Primrdarstellungen haben wie Temporal, dessen valueOf()-Methoden fr alle Objekte eine Ausnahme 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, "" + x nicht zu verwenden, um eine Zeichenfolgenkonvertierung durchzufhren.

Beispiele

Addition mit Zahlen

js
1 + 2; // 3

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

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

Addition mit BigInts

js
1n + 2n; // 3n

Sie knnen BigInt- und Nummern-Operanden in der Addition nicht mischen. null, undefined und boolesche Werte werden in Zahlen konvertiert und sind ebenfalls verboten.

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

Zeichenfolgen haben Vorrang vor anderen Typen, sodass das Hinzufgen einer Zeichenfolge zu einer BigInt eine Zeichenfolgenverkettung anstelle eines TypeErrors verursacht.

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

Um eine Addition mit einem BigInt und einem Nicht-BigInt durchzufhren, konvertieren Sie einen der Operanden:

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

Addition mit 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

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

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page