Signatur
Beschreibung
Die Methode sup() gehört zu den sogenannten HTML-Wrapper-Methoden von String. Sie gibt einen neuen String der Form <sup>str</sup> zurück. Der ursprüngliche String bleibt dabei unverändert, denn Strings sind in JavaScript unveränderlich.
Früher nutzte man sie, um schnell HTML-Markup für Hochstellungen zu erzeugen, etwa für Exponenten (m²), Ordnungszahlen (1st) oder Fußnotenverweise. Die Methode steht im Anhang B der ECMAScript-Spezifikation und gilt als veraltet. Sie existiert nur noch aus Gründen der Abwärtskompatibilität.
Für neuen Code solltest du stattdessen DOM-APIs verwenden, zum Beispiel document.createElement('sup') mit textContent, oder Template-Literale mit sauber maskiertem Inhalt. So hast du die volle Kontrolle über das Markup und vermeidest Sicherheitslücken.
Rückgabewert
<sup> beginnt, dann den ursprünglichen String enthält und mit </sup> endet.Beispiele
Einfacher Aufruf
const exponent = '2';
console.log(exponent.sup());
console.log(`m${exponent.sup()}`);
Fußnotenverweis in ein Element einfügen (veralteter Stil)
const absatz = document.createElement('p');
// Nur mit vertrauenswürdigem, statischem Inhalt verwenden!
absatz.innerHTML = `Laut Studie${'[1]'.sup()} steigt der Wert.`;
document.body.append(absatz);
console.log(absatz.innerHTML);
Moderne, sichere Alternative per DOM
const hochgestellt = (text) => {
const sup = document.createElement('sup');
sup.textContent = text; // wird automatisch maskiert
return sup;
};
const formel = document.createElement('p');
formel.append('E = mc', hochgestellt('2'));
document.body.append(formel);
console.log(formel.outerHTML);
Kein Maskieren von Sonderzeichen
const eingabe = '<img src=x onerror=alert(1)>';
console.log(eingabe.sup());
// Wichtig · Fallstricke
- Veraltet:
sup()ist in Annex B von ECMAScript festgelegt und wird nicht mehr empfohlen. Alle Browser und Node.js unterstützen die Methode zwar weiterhin, in neuem Code solltest du sie aber nicht verwenden. - XSS-Risiko: Der String wird nicht maskiert. Zeichen wie
<,>oder&landen unverändert im Ergebnis. Wenn du das Ergebnis mit Benutzereingaben ininnerHTMLoderdocument.write()schreibst, kann Schadcode eingeschleust werden. Verwende bessertextContentoder maskiere den Inhalt vorher. - Eine strenge Content Security Policy blockiert zwar Inline-Skripte, schützt aber nicht vor jeder Markup-Injektion. Sichere DOM-APIs sind daher die bessere Wahl.
- Das Ergebnis ist nur ein String. Hochgestellt erscheint der Text erst, wenn der String als HTML ausgewertet wird. In der Konsole oder in
textContentsiehst du die Tags als reinen Text. - Semantik:
<sup>ist nur für typografisch begründete Hochstellungen gedacht, etwa Exponenten oder Fußnoten. Für reine Gestaltung nimmst du CSS (vertical-align: super).