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.
// 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
.
const good = Boolean(expression);
const good2 = !!expression;
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.)
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 zufalse
.null
wird zufalse
.0
,-0
undNaN
werden zufalse
, andere Zahlen zutrue
.0n
wird zufalse
, andere BigInts zutrue
.- Der leere String
""
wird zufalse
, andere Strings zutrue
. - 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
negiertx
zweimal, wasx
unter Verwendung desselben Algorithmus wie oben in einen boolean umwandelt. - Die
Boolean()
Funktion:Boolean(x)
verwendet denselben Algorithmus wie oben, umx
zu konvertieren.
Beachten Sie, dass Wahrhaftigkeit nicht dasselbe ist wie lockere Gleichheit zu true
oder false
.
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
undnull
sind falsy, aber nicht locker gleichfalse
."0"
(und andere String-Literale, die nicht""
sind, aber in 0 umgewandelt werden) sind truthy, aber locker gleichfalse
.- 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 derBoolean
-Konstruktor.
Instanzmethoden
Boolean.prototype.toString()
-
Gibt einen String von entweder
true
oderfalse
zurück, abhängig vom Wert des Objekts. Überschreibt dieObject.prototype.toString()
-Methode. Boolean.prototype.valueOf()
-
Gibt den primitiven Wert des
Boolean
-Objekts zurück. Überschreibt dieObject.prototype.valueOf()
-Methode.
Beispiele
Erstellen von falschen Werten
const bNoParam = Boolean();
const bZero = Boolean(0);
const bNull = Boolean(null);
const bEmptyString = Boolean("");
const bfalse = Boolean(false);
Erstellen von wahren Werten
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
- Boolean
- Primitive Boolean-Werte
- Boolean-Datentyp auf Wikipedia