Signatur
Beschreibung
Die Methode bold() gehört zu den sogenannten HTML-Wrapper-Methoden von String. Sie erzeugt einen neuen String, in dem der ursprüngliche Text von <b> und </b> umschlossen ist. Der Ausgangsstring selbst wird dabei nicht verändert.
Die Methode stammt aus der Anfangszeit von JavaScript und wurde in ES2015 nur aus Kompatibilitätsgründen im Anhang B (Annex B) der Spezifikation festgeschrieben. Sie gilt als veraltet und sollte in neuem Code nicht mehr verwendet werden. Sie ist vor allem dann relevant, wenn man alten Code pflegt oder versteht.
Heute erzeugt man fetten Text besser über DOM-Methoden wie document.createElement("b") oder "strong" zusammen mit textContent, über Template-Literale in einer abgesicherten Rendering-Schicht oder rein über CSS (font-weight: bold). Für semantisch wichtige Hervorhebungen ist <strong> meist die bessere Wahl als <b>.
Rückgabewert
<b>str</b>, wobei str der ursprüngliche String ist. Der Inhalt wird nicht HTML-maskiert.Beispiele
Grundlegende Verwendung
const text = "Wichtiger Hinweis";
const fett = text.bold();
console.log(fett);
console.log(text); // Original bleibt unverändert
Fehlende Maskierung – Achtung XSS
const eingabe = '<img src=x onerror="alert(1)">';
// bold() maskiert nichts – der gefährliche Inhalt bleibt erhalten
console.log(eingabe.bold());
Moderne, sichere Alternative per DOM
const zeigeFett = (container, text) => {
const b = document.createElement("strong");
b.textContent = text; // wird automatisch als reiner Text behandelt
container.append(b);
};
zeigeFett(document.body, "Bestellung erfolgreich");
console.log(document.body.lastElementChild.outerHTML);
Ersatz für bold() in Legacy-Code mit Maskierung
const escapeHtml = (s) =>
s.replace(/[&<>"']/g, (c) => ({
"&": "&", "<": "<", ">": ">", '"': """, "'": "'"
})[c]);
const fett = (s) => `<b>${escapeHtml(s)}</b>`;
console.log(fett("Preis < 10 €"));
// Wichtig · Fallstricke
- Veraltet:
bold()steht nur in Annex B der ECMAScript-Spezifikation. Zwar unterstützen alle Browser und Node.js die Methode, neue Projekte sollten sie aber nicht verwenden. Linter wie ESLint (z. B. über Plugins wieeslint-plugin-unicorn) können sie melden. - Sicherheit (XSS): Der Inhalt wird nicht maskiert. Wer das Ergebnis mit Nutzereingaben über
innerHTML,insertAdjacentHTMLoderdocument.writeeinfügt, öffnet eine Lücke für Cross-Site-Scripting. Verwenden Sie stattdessentextContentoder maskieren Sie selbst. Eine strenge Content Security Policy (CSP) und Trusted Types verringern das Risiko zusätzlich. - Die Methode liefert nur einen String und erzeugt kein DOM-Element. Die Formatierung wird erst sichtbar, wenn der String als HTML ausgewertet wird.
<b>ist rein visuell. Für semantische Betonung (z. B. für Screenreader) ist<strong>besser geeignet.- In TypeScript ist die Methode als
@deprecatedgekennzeichnet.