Signatur
Beschreibung
Die Methode concat() hängt ein oder mehrere Argumente in der angegebenen Reihenfolge an den aufrufenden String an und gibt das Ergebnis als neuen String zurück. Strings sind in JavaScript unveränderlich, deshalb wird der Ausgangsstring nie verändert.
Argumente, die keine Strings sind, werden vorher mit der internen Operation ToString umgewandelt. Aus null wird "null", aus undefined wird "undefined" und aus Arrays wird die kommagetrennte Liste ihrer Elemente.
Im Ergebnis entspricht concat() weitgehend dem Operator + bzw. +=. Es gibt aber einen kleinen Unterschied: concat() wandelt Objekte direkt in Strings um (bevorzugt über toString()). Der Operator + wandelt Operanden dagegen zuerst in einen primitiven Wert um, mit dem Hinweis "default", und fragt dabei meist zuerst valueOf() ab.
In der Praxis sind + und Template-Literale meist lesbarer. Sinnvoll ist concat() vor allem dann, wenn man eine Funktionsreferenz braucht oder viele Teile per Spread-Syntax übergeben möchte, zum Beispiel "".concat(...teile).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $str1, …, strN | any | Ein oder mehrere Werte, die an den String angehängt werden. Werte, die keine Strings sind, werden mit ToString umgewandelt. Ohne Argumente gibt die Methode eine Kopie des Ausgangsstrings zurück. |
Rückgabewert
Beispiele
Mehrere Teile verketten
const vorname = "Ada";
const nachname = "Lovelace";
const gruss = "Hallo, ".concat(vorname, " ", nachname, "!");
console.log(gruss);
console.log(vorname); // Ausgangsstring bleibt unverändert
Automatische Typumwandlung der Argumente
console.log("".concat(4, 5)); // Zahlen werden zu Strings
console.log("".concat(null, undefined));
console.log("".concat([1, 2, 3])); // Array → "1,2,3"
console.log("".concat({}));
console.log("".concat(true));
Array-Teile per Spread zusammenfügen
const teile = ["2024", "-", "06", "-", "15"];
const datum = "".concat(...teile);
console.log(datum);
// Als Funktionsreferenz, z. B. für ein Präfix
const mitPraefix = (praefix) => (wert) => praefix.concat(wert);
console.log(["a", "b"].map(mitPraefix("id-")));
Unterschied zum +-Operator
const preis = {
valueOf() { return 42; },
toString() { return "42,00 €"; }
};
console.log("Preis: " + preis); // ToPrimitive → valueOf()
console.log("Preis: ".concat(preis)); // ToString → toString()
// Wichtig · Fallstricke
- Nicht verwechseln mit
Array.prototype.concat(): Die String-Variante liefert immer einen String."a".concat(["b", "c"])ergibt"ab,c"und kein Array. - Symbole: Wird ein
Symbolübergeben, wirft die Methode einenTypeError(„Cannot convert a Symbol value to a string“). Wer ein Symbol einbauen will, wandelt es vorher ausdrücklich um, z. B. mitString(sym)odersym.description. - Ungültiges
this:String.prototype.concat.call(null, "x")oder ein Aufruf mitundefinedalsthiswirft einenTypeError. - Leistung und Lesbarkeit: MDN empfiehlt eher
+/+=oder Template-Literale. Moderne Engines optimieren diese sehr gut, undconcat()bringt in der Regel keinen Geschwindigkeitsvorteil. Um viele Teile mit Trennzeichen zu verbinden, istArray.prototype.join()meist klarer. - Die Methode wird von allen Browsern und von Node.js unterstützt.