Signatur
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
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
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');
}
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
// Wichtig · Fallstricke
- Nicht verwenden:
new Boolean()gilt als Anti-Pattern. ESLint meldet es mit der Regelno-new-wrappers. StattdessenBoolean(value)oder!!valuenutzen. - Immer truthy:
new Boolean(false),new Boolean(0)undnew Boolean("")sind als Objekte in Bedingungen alle truthy. - Identität:
new Boolean(true) === new Boolean(true)ergibtfalse, weil zwei verschiedene Objekte verglichen werden. - Strings:
Boolean("false")isttrue. Strings aus Formularen, JSON oder URLs deshalb ausdrücklich vergleichen, z. B. mitstr === "true". document.all: Aus historischen Gründen ist es falsy.Boolean(document.all)ergibt daherfalse.- Kompatibilität: Wird in allen Browsern und in Node.js unterstützt.