Start · Sprachen · JavaScript · Referenz · Boolean.prototype.toString()

Boolean.prototype.toString()

Methode

Gibt den booleschen Wert als String <code>"true"</code> oder <code>"false"</code> zurück.

seit JavaScript ES1 – Baseline: alle Browser Kategorie: method-property

Signatur

Boolean.prototype.toString()

Beschreibung

Die Methode toString() wandelt einen booleschen Wert in seine Textdarstellung um. Das Ergebnis ist immer genau einer der beiden Strings "true" oder "false". Das Boolean-Objekt überschreibt damit die allgemeine Methode Object.prototype.toString(), die sonst "[object Boolean]" liefern würde.

Ruft man die Methode auf einem primitiven Wert wie true auf, verpackt JavaScript den Wert im Hintergrund kurz in ein Wrapper-Objekt (Autoboxing). Deshalb funktioniert true.toString(), ohne dass man vorher new Boolean() aufrufen muss.

Direkt aufrufen muss man toString() nur selten. JavaScript nutzt die Umwandlung automatisch bei String-Verkettung, in Template-Literalen und bei String(wert). Ein ausdrücklicher Aufruf lohnt sich, wenn im Code klar sichtbar sein soll, dass hier ein String entsteht, etwa beim Schreiben von HTML-Attributen, URL-Parametern oder Werten für den Speicher (localStorage).

Rückgabewert

Typ
string
Beschreibung
"true", wenn der Wert true ist, sonst "false".

Beispiele

Einfache Umwandlung von Primitiven und Wrapper-Objekten

const aktiv = true;
console.log(aktiv.toString());
console.log(false.toString());

const wrapper = new Boolean(false);
console.log(wrapper.toString());
console.log(typeof aktiv.toString());
true false false string

ARIA-Attribut beim Umschalten eines Menüs setzen

const button = document.querySelector('#menu-toggle');
let offen = false;

button.addEventListener('click', () => {
  offen = !offen;
  // setAttribute erwartet einen String
  button.setAttribute('aria-expanded', offen.toString());
  console.log(button.getAttribute('aria-expanded'));
});
true (nach dem ersten Klick) false (nach dem zweiten Klick)

Einstellung in localStorage speichern und wieder einlesen

const darkMode = true;
localStorage.setItem('darkMode', darkMode.toString());

// Beim Einlesen NICHT Boolean(str) verwenden – "false" wäre truthy!
const gespeichert = localStorage.getItem('darkMode') === 'true';
console.log(gespeichert, typeof gespeichert);
true boolean

Sicherer Aufruf bei möglicherweise fehlenden Werten

const flags = { beta: true, legacy: undefined };

const alsText = (wert) => String(wert); // wirft keinen Fehler
console.log(alsText(flags.beta));
console.log(alsText(flags.legacy));

try {
  flags.legacy.toString();
} catch (e) {
  console.log(e.constructor.name);
}
true undefined TypeError

// Wichtig · Fallstricke

  • Kein null/undefined: Ein Aufruf auf null oder undefined löst einen TypeError aus. Wenn ein Wert fehlen kann, ist String(wert) oder wert?.toString() sicherer.
  • Falsch zurückwandeln: Boolean("false") ergibt true, weil jeder nicht leere String truthy ist. Zum Zurückwandeln vergleicht man ausdrücklich: str === "true".
  • Andere Objekte als this: Boolean.prototype.toString.call(1) wirft einen TypeError. Die Methode funktioniert nur mit booleschen Werten oder Boolean-Objekten.
  • Wrapper-Objekte: new Boolean(false) ist ein Objekt und damit truthy, obwohl toString() "false" liefert. Wrapper-Objekte sollte man vermeiden.
  • Die Methode ist seit ECMAScript 1 Teil der Sprache und funktioniert in allen Browsern und in Node.js.