Start · Sprachen · JavaScript · Referenz · String.prototype.concat()

String.prototype.concat()

Methode

Hängt die übergebenen Argumente an den aufrufenden String an und gibt einen neuen String zurück. Der ursprüngliche String bleibt unverändert.

seit JavaScript ES3 (Baseline: alle Browser) Kategorie: method-property

Signatur

String.prototype.concat(str1, str2, /* …, */ strN)

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

Typ
string
Beschreibung
Ein neuer String aus dem Ausgangsstring und allen angehängten Argumenten, in der Reihenfolge ihrer Übergabe.

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
Hallo, Ada Lovelace! Ada

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));
45 nullundefined 1,2,3 [object Object] 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-")));
2024-06-15 [ 'id-a', 'id-b' ]

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()
Preis: 42 Preis: 42,00 €

// 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 einen TypeError („Cannot convert a Symbol value to a string“). Wer ein Symbol einbauen will, wandelt es vorher ausdrücklich um, z. B. mit String(sym) oder sym.description.
  • Ungültiges this: String.prototype.concat.call(null, "x") oder ein Aufruf mit undefined als this wirft einen TypeError.
  • Leistung und Lesbarkeit: MDN empfiehlt eher +/+= oder Template-Literale. Moderne Engines optimieren diese sehr gut, und concat() bringt in der Regel keinen Geschwindigkeitsvorteil. Um viele Teile mit Trennzeichen zu verbinden, ist Array.prototype.join() meist klarer.
  • Die Methode wird von allen Browsern und von Node.js unterstützt.