Start · Sprachen · JavaScript · Referenz · new Boolean()

new Boolean()

Methode

Der <code>Boolean()</code>-Konstruktor erzeugt mit <code>new</code> ein Boolean-Wrapper-Objekt; ohne <code>new</code> wandelt er einen Wert in einen primitiven Wahrheitswert um.

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

Signatur

new Boolean(value)

Beschreibung

Mit new Boolean(value) entsteht ein Objekt vom Typ Boolean, das einen primitiven Wahrheitswert (true oder false) umschließt. Welchen Wert es enthält, hängt davon ab, ob value truthy oder falsy ist. Falsy sind false, 0, -0, 0n, "", null, undefined und NaN (sowie document.all). Alle anderen Werte sind truthy, auch "false", "0", [] und {}.

Ruft man Boolean(value) ohne new auf, gibt die Funktion einen primitiven Wahrheitswert zurück. Genau das braucht man in der Praxis fast immer, zum Beispiel zum Filtern mit array.filter(Boolean) oder zum ausdrücklichen Umwandeln von Werten. Das Ergebnis ist dasselbe wie bei der doppelten Negation !!value.

Wrapper-Objekte mit new Boolean() sind in modernem Code praktisch nie sinnvoll. Jedes Objekt ist truthy, also auch new Boolean(false). Deshalb führt ein solches Objekt in if-Bedingungen und logischen Ausdrücken leicht zu unerwartetem Verhalten. Außerdem liefert typeof dafür "object", und strikte Vergleiche mit primitiven Werten schlagen fehl.

Parameter

Name Typ Default Beschreibung
$value any undefined Beliebiger Wert, der nach den Regeln von truthy und falsy in true oder false umgewandelt wird. Fehlt er, ist das Ergebnis false.

Rückgabewert

Typ
Boolean
Beschreibung
Mit new: ein Boolean-Objekt (typeof ergibt "object"). Ohne new: ein primitiver Wert vom Typ boolean.

Beispiele

Wrapper-Objekt und primitiver Wert im Vergleich

const obj = new Boolean(false);
const prim = Boolean(false);

console.log(typeof obj);        // Objekt
console.log(typeof prim);       // primitiv
console.log(obj.valueOf());     // eingeschlossener Wert
console.log(obj === false);     // strikter Vergleich schlägt fehl
console.log(obj == false);      // lockerer Vergleich wandelt um
object boolean false false true

Fallstrick: new Boolean(false) ist truthy

const flag = new Boolean(false);

if (flag) {
  console.log('Wird ausgeführt – jedes Objekt ist truthy!');
}

// Richtig: primitiven Wert verwenden
if (flag.valueOf()) {
  console.log('Wird nicht ausgeführt');
}
Wird ausgeführt – jedes Objekt ist truthy!

Praxis: Boolean() ohne new zum Filtern und Umwandeln

const eingaben = ['Anna', '', null, 'Ben', undefined, 0, 'Clara'];
const gueltig = eingaben.filter(Boolean);
console.log(gueltig);

// Achtung bei Strings aus Formularen oder Query-Parametern
console.log(Boolean('false'));          // nicht leerer String ist truthy
const param = new URLSearchParams('?aktiv=false').get('aktiv');
console.log(param === 'true');         // richtig parsen
[ 'Anna', 'Ben', 'Clara' ] true false

// Wichtig · Fallstricke

  • Nicht verwenden: new Boolean() gilt als Anti-Pattern. ESLint meldet es mit der Regel no-new-wrappers. Stattdessen Boolean(value) oder !!value nutzen.
  • Immer truthy: new Boolean(false), new Boolean(0) und new Boolean("") sind als Objekte in Bedingungen alle truthy.
  • Identität: new Boolean(true) === new Boolean(true) ergibt false, weil zwei verschiedene Objekte verglichen werden.
  • Strings: Boolean("false") ist true. Strings aus Formularen, JSON oder URLs deshalb ausdrücklich vergleichen, z. B. mit str === "true".
  • document.all: Aus historischen Gründen ist es falsy. Boolean(document.all) ergibt daher false.
  • Kompatibilität: Wird in allen Browsern und in Node.js unterstützt.