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 haben: true
oder false
, die den Wahrheitswert eines logischen Ausdrucks darstellen.
Beschreibung
Boolean-Werte werden typischerweise von Relationsoperatoren, Vergleichsoperatoren und logischem NICHT (!
) erzeugt. Sie können auch von Funktionen erzeugt werden, die Bedingungen repräsentieren, wie z.B. Array.isArray()
. Beachten Sie, dass binäre logische Operatoren wie &&
und ||
die Werte der Operanden zurückgeben, die möglicherweise keine booleschen Werte sind.
Boolean-Werte werden typischerweise in bedingten Prüfungen verwendet, wie etwa bei der Bedingung für if...else
und while
Anweisungen, beim bedingten Operator (? :
) oder dem Rückgabewert von Prädikaten wie Array.prototype.filter()
.
Sie müssen selten etwas explizit in einen booleschen Wert umwandeln, da JavaScript dies in booleschen Kontexten automatisch tut, sodass Sie jeden Wert so verwenden können, als wäre er ein boolescher Wert, basierend auf seiner Truthiness. Es wird auch empfohlen, if (condition)
und if (!condition)
anstelle von if (condition === true)
oder if (condition === false)
in Ihrem eigenen Code zu verwenden, um von dieser Konvention zu profitieren. Allerdings kann es hilfreich sein, sicherzustellen, dass Werte, die Bedingungen repräsentieren, immer Booleans 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";
Boolean-Primitiven und Boolean-Objekte
Um Nicht-Boolean-Werte in Boolean-Werte umzuwandeln, verwenden Sie Boolean
als Funktion oder verwenden Sie den doppelten NICHT 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!
Dies liegt daran, dass alle Objekte, einschließlich eines Boolean
-Objekts, dessen eingeschlossener Wert false
ist, wahrhaftig sind und in Bereichen wie bedingten Anweisungen zu true
ausgewertet werden. (Siehe auch den Abschnitt Boolean-Koerzierung weiter 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
als Konstruktor verwenden.
Boolean-Koerzierung
Viele eingebaute Operationen, die Booleans erwarten, erzwingen zuerst die Umwandlung ihrer Argumente zu Booleans. Die Operation lässt sich wie folgt zusammenfassen:
- Booleans werden unverändert zurückgegeben.
undefined
wird infalse
umgewandelt.null
wird infalse
umgewandelt.0
,-0
undNaN
werden infalse
umgewandelt; andere Zahlen intrue
.0n
wird infalse
umgewandelt; andere BigInts werden intrue
umgewandelt.- Der leere String
""
wird infalse
umgewandelt; andere Strings intrue
. - Symbole werden in
true
umgewandelt. - Alle Objekte werden zu
true
.
Hinweis:
Ein Legacy-Verhalten sorgt dafür, 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: Im Gegensatz zu anderen Typumwandlungen, wie String-Koerzierung oder Nummern-Koerzierung, versucht die Boolean-Koerzierung nicht, Objekte durch Aufrufen von Benutzermethoden in primitive Typen umzuwandeln.
Mit anderen Worten, es gibt nur eine Handvoll von Werten, die in false
umgewandelt werden — diese werden als falsy Werte bezeichnet. Alle anderen Werte werden als truthy Werte bezeichnet. Die Wahrheit eines Wertes ist wichtig, wenn er mit logischen Operatoren, bedingten Anweisungen oder einem beliebigen booleschen Kontext verwendet wird.
Es gibt zwei Möglichkeiten, denselben Effekt in JavaScript zu erzielen.
- Doppelter NICHT:
!!x
negiertx
zweimal, wasx
in einen booleschen Wert konvertiert, basierend auf dem oben genannten Algorithmus. - Die
Boolean()
Funktion:Boolean(x)
verwendet denselben Algorithmus, umx
zu konvertieren.
Beachten Sie, dass Truthiness nicht dasselbe ist wie die lose Gleichheit mit true
oder false
.
if ([]) {
console.log("[] is truthy");
}
if ([] == false) {
console.log("[] == false");
}
// [] is truthy
// [] == false
[]
ist wahrhaftig, aber es ist auch lose gleich false
. Es ist wahrhaftig, weil alle Objekte wahrhaftig sind. Wenn jedoch mit false
verglichen wird, das ein primitiver Wert ist, wird []
auch in einen primitiven Wert umgewandelt, was ""
über Array.prototype.toString()
entspricht. Wenn Strings und Booleans verglichen werden, werden beide in Zahlen umgewandelt, und sie werden beide zu 0
, sodass [] == false
true
ist. Im Allgemeinen unterscheiden sich Falschheit und == false
in den folgenden Fällen:
NaN
,undefined
undnull
sind falsy, aber nicht lose gleichfalse
."0"
(und andere Stringliterale, die nicht""
sind, aber zu 0 umgewandelt werden) sind wahrhaftig, aber lose gleichfalse
.- Objekte sind immer wahrhaftig, aber ihre primitive Darstellung kann lose gleich
false
sein.
Truthy-Werte sind noch unwahrscheinlicher lose gleich true
. Alle Werte sind entweder wahrhaftig oder falsy, aber die meisten Werte sind lose weder gleich true
noch false
.
Konstruktor
Boolean()
-
Erstellt
Boolean
-Objekte. Wenn sie als Funktion aufgerufen wird, gibt sie 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. Für
Boolean
-Instanzen ist der Anfangswert derBoolean
-Konstruktor.
Instanzmethoden
Boolean.prototype.toString()
-
Gibt einen String von entweder
true
oderfalse
zurück, je nach 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 false-Werten
const bNoParam = Boolean();
const bZero = Boolean(0);
const bNull = Boolean(null);
const bEmptyString = Boolean("");
const bfalse = Boolean(false);
Erstellen von true-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® 2025 Language Specification # sec-boolean-objects |
Browser-Kompatibilität
Siehe auch
- Boolean
- Boolean-Primitiven
- Boolean-Datentyp auf Wikipedia