Boolean

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Boolean-Werte können einen von zwei Werten annehmen: true oder false, die den Wahrheitswert eines logischen Ausdrucks darstellen.

Beschreibung

Boolean-Werte werden typischerweise von Relationalen Operatoren, Gleichheitsoperatoren und logischem NOT (!) erzeugt. Sie können auch durch Funktionen erzeugt werden, die Bedingungen darstellen, wie Array.isArray(). Beachten Sie, dass binäre logische Operatoren wie && und || die Werte der Operanden zurückgeben, die möglicherweise keine boolean Werte sind.

Boolean-Werte werden typischerweise in Bedingungsprüfungen verwendet, wie zum Beispiel die Bedingung für if...else- und while-Anweisungen, den trinitischen Operator (? :), oder den prädikatsbezogenen Rückgabewert von Array.prototype.filter().

Es ist selten notwendig, etwas explizit in einen boolean Wert zu konvertieren, da JavaScript dies automatisch in boolean Kontexten tut. Sie können also jeden Wert verwenden, als wäre er ein Boolean, basierend auf seiner Wahrhaftigkeit. Es wird empfohlen, if (condition) und if (!condition) anstelle von if (condition === true) oder if (condition === false) in Ihrem eigenen Code zu verwenden, um diese Konvention zu nutzen. Dennoch kann es hilfreich sein, sicherzustellen, dass Werte, die Bedingungen darstellen, immer boolean sind, um die Absicht Ihres Codes zu verdeutlichen.

js
// Do this:
// This always returns a boolean value
const isObject = (obj) => !!obj && typeof obj === "object";

// Or this:
const isObject = (obj) => Boolean(obj) && typeof obj === "object";

// Or this:
const isObject = (obj) => obj !== null && typeof obj === "object";

// Instead of this:
// This may return falsy values that are not equal to false
const isObject = (obj) => obj && typeof obj === "object";

Primitive Boolean-Werte und Boolean-Objekte

Um nicht-Boolean-Werte in Boolean umzuwandeln, verwenden Sie Boolean als Funktion oder den doppelten NOT Operator. Verwenden Sie nicht den Boolean()-Konstruktor mit new.

js
const good = Boolean(expression);
const good2 = !!expression;
js
const bad = new Boolean(expression); // don't use this!

Der Grund dafür ist, dass alle Objekte, einschließlich eines Boolean-Objekts, dessen wrapped Wert false ist, truthy sind und in Bedingungen zu true ausgewertet werden. (Siehe auch den Abschnitt Boolean-Koerzierung unten.)

js
if (new Boolean(true)) {
  console.log("This log is printed.");
}

if (new Boolean(false)) {
  console.log("This log is ALSO printed.");
}

const myFalse = new Boolean(false); // myFalse is a Boolean object (not the primitive value false)
const g = Boolean(myFalse); // g is true
const myString = new String("Hello"); // myString is a String object
const s = Boolean(myString); // s is true

Warnung: Sie sollten selten den Boolean-Konstruktor verwenden.

Boolean-Koerzierung

Viele eingebaute Operationen, die Booleans erwarten, koerzieren ihre Argumente zuerst zu Booleans. Die Operation kann wie folgt zusammengefasst werden:

  • Booleans werden unverändert zurückgegeben.
  • undefined wird zu false.
  • null wird zu false.
  • 0, -0 und NaN werden zu false, andere Zahlen zu true.
  • 0n wird zu false, andere BigInts zu true.
  • Der leere String "" wird zu false, andere Strings zu true.
  • Symbole werden zu true.
  • Alle Objekte werden zu true.

Hinweis: Ein veraltetes Verhalten führt dazu, dass document.all false zurückgibt, wenn es als Boolean verwendet wird, obwohl es ein Objekt ist. Diese Eigenschaft ist veraltet und nicht standardisiert und sollte nicht verwendet werden.

Hinweis: Anders als bei anderen Typumwandlungen wie String-Koerzierung oder Zahlen-Koerzierung versucht die boolean Koerzierung nicht, Objekte in Primitive umzuwandeln, indem Benutzermethoden aufgerufen werden.

Mit anderen Worten, es gibt nur eine Handvoll Werte, die zu false koerziert werden — diese werden falsy genannt. Alle anderen Werte werden truthy genannt. Die Wahrhaftigkeit eines Wertes ist wichtig, wenn er mit logischen Operatoren, in Bedingungen oder in jedem boolean Kontext verwendet wird.

Es gibt zwei Möglichkeiten, denselben Effekt in JavaScript zu erreichen.

  • Doppeltes NOT: !!x negiert x zweimal, was x unter Verwendung desselben Algorithmus wie oben in einen boolean umwandelt.
  • Die Boolean() Funktion: Boolean(x) verwendet denselben Algorithmus wie oben, um x zu konvertieren.

Beachten Sie, dass Wahrhaftigkeit nicht dasselbe ist wie lockere Gleichheit zu true oder false.

js
if ([]) {
  console.log("[] is truthy");
}
if ([] == false) {
  console.log("[] == false");
}
// [] is truthy
// [] == false

[] ist truthy, aber auch locker gleich false. Es ist truthy, weil alle Objekte truthy sind. Aber wenn man es mit false vergleicht, das ein Primitive ist, wird [] auch in ein Primitive umgewandelt, was "" über Array.prototype.toString() ist. Beim Vergleichen von Strings und Booleans werden beide in Zahlen umgewandelt, und sie werden beide 0, sodass [] == false true ist. Im Allgemeinen unterscheiden sich Falsizität und == false in den folgenden Fällen:

  • NaN, undefined und null sind falsy, aber nicht locker gleich false.
  • "0" (und andere String-Literale, die nicht "" sind, aber in 0 umgewandelt werden) sind truthy, aber locker gleich false.
  • Objekte sind immer truthy, aber ihre Primitivdarstellung kann locker gleich false sein.

Truthy-Werte sind noch unwahrscheinlicher, locker gleich true zu sein. Alle Werte sind entweder truthy oder falsy, aber die meisten Werte sind weder locker gleich true noch false.

Konstruktor

Boolean()

Erstellt Boolean-Objekte. Beim Aufruf als Funktion gibt es primitive Werte des Typs Boolean zurück.

Instanzeigenschaften

Diese Eigenschaften sind auf Boolean.prototype definiert und werden von allen Boolean-Instanzen geteilt.

Boolean.prototype.constructor

Die Konstruktorfunktion, die das Instanzobjekt erstellt hat. Bei Boolean-Instanzen ist der Ausgangswert der Boolean-Konstruktor.

Instanzmethoden

Boolean.prototype.toString()

Gibt einen String von entweder true oder false zurück, abhängig vom Wert des Objekts. Überschreibt die Object.prototype.toString()-Methode.

Boolean.prototype.valueOf()

Gibt den primitiven Wert des Boolean-Objekts zurück. Überschreibt die Object.prototype.valueOf()-Methode.

Beispiele

Erstellen von falschen Werten

js
const bNoParam = Boolean();
const bZero = Boolean(0);
const bNull = Boolean(null);
const bEmptyString = Boolean("");
const bfalse = Boolean(false);

Erstellen von wahren Werten

js
const btrue = Boolean(true);
const btrueString = Boolean("true");
const bfalseString = Boolean("false");
const bSuLin = Boolean("Su Lin");
const bArrayProto = Boolean([]);
const bObjProto = Boolean({});

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-boolean-objects

Browser-Kompatibilität

Siehe auch