Signatur
Beschreibung
Boolean-Werte können einen von zwei Werten annehmen: true oder false und repräsentieren den Wahrheitswert einer logischen Aussage.
Boolean-Werte werden typischerweise von relationalen Operatoren, Gleichheitsoperatoren und dem logischen NICHT (!) erzeugt. Sie können auch von Funktionen erzeugt werden, die Bedingungen darstellen, wie zum Beispiel Array.isArray(). Beachte, dass binäre logische Operatoren wie && und || die Werte der Operanden zurückgeben, die möglicherweise keine Boolean-Werte sind.
Boolean-Werte werden typischerweise für bedingte Prüfungen verwendet, wie etwa als Bedingung für if...else- und while-Anweisungen, den bedingten Operator (? :) oder als Rückgabewert des Prädikats von Array.prototype.filter().
Du musst nur selten explizit etwas in einen Boolean-Wert umwandeln, da JavaScript dies in Boolean-Kontexten automatisch tut. Du kannst also jeden Wert so verwenden, als wäre er ein Boolean, basierend auf seiner truthiness. Es wird auch empfohlen, in eigenem Code if (condition) und if (!condition) anstelle von if (condition === true) oder if (condition === false) zu verwenden, um diese Konvention zu nutzen. Sicherzustellen, dass Werte, die Bedingungen darstellen, immer Booleans sind, kann jedoch dazu beitragen, die Absicht deines Codes zu verdeutlichen.
Boolean-Primitives und Boolean-Objekte
Um Nicht-Boolean-Werte in Boolean umzuwandeln, verwende Boolean als Funktion oder den doppelten NICHT-Operator. Verwende den Boolean()-Konstruktor nicht mit new.
Der Grund ist, dass alle Objekte, einschließlich eines Boolean-Objekts, dessen umschlossener Wert false ist, truthy sind und an Stellen wie in bedingten Anweisungen zu true ausgewertet werden. (Siehe auch den Abschnitt zur Boolean-Coercion weiter unten.)
Boolean-Coercion
Viele eingebaute Operationen, die Booleans erwarten, wandeln ihre Argumente zunächst in Booleans um. Die Operation kann wie folgt zusammengefasst werden:
- Booleans werden unverändert zurückgegeben.
undefinedwird zufalse.nullwird zufalse.0,-0undNaNwerden zufalse; andere Zahlen werden zutrue.0nwird zufalse; andereBigInts werden zutrue.- Der leere String
""wird zufalse; andere Strings werden zutrue. Symbols werden zutrue.- Alle Objekte werden zu
true.
Mit anderen Worten, es gibt nur eine Handvoll Werte, die zu false umgewandelt werden – diese werden falsy-Werte genannt. Alle anderen Werte werden truthy-Werte genannt. Die Truthiness eines Wertes ist wichtig, wenn er mit logischen Operatoren, bedingten Anweisungen oder in einem beliebigen Boolean-Kontext verwendet wird.
Es gibt zwei Möglichkeiten, denselben Effekt in JavaScript zu erreichen:
- Double NOT:
!!xnegiertxzweimal, wasxmit demselben Algorithmus wie oben in einen Boolean umwandelt. - Die
Boolean()-Funktion:Boolean(x)verwendet denselben Algorithmus wie oben, umxumzuwandeln.
Beachte, dass Truthiness nicht dasselbe ist wie loose equal zu true oder false zu sein.
[] ist truthy, aber es ist auch loosely equal zu false. Es ist truthy, weil alle Objekte truthy sind. Beim Vergleich mit false, einem Primitive, wird [] jedoch ebenfalls zu einem Primitive umgewandelt, nämlich "" über Array.prototype.toString(). Der Vergleich von Strings und Booleans führt dazu, dass beide in Zahlen umgewandelt werden, und beide werden zu 0, sodass [] == false zu true wird. Allgemein unterscheiden sich Falsiness und == false in folgenden Fällen:
NaN,undefinedundnullsind falsy, aber nicht loosely equal zufalse."0"(und andere String-Literale, die nicht""sind, aber zu 0 umgewandelt werden) ist truthy, aber loosely equal zufalse.- Objekte sind immer truthy, aber ihre primitive Darstellung kann loosely equal zu
falsesein.
Bei truthy-Werten ist es noch unwahrscheinlicher, dass sie loosely equal zu true sind. Alle Werte sind entweder truthy oder falsy, aber die meisten Werte sind weder loosely equal zu true noch zu false.
Konstruktor
Boolean(): ErstelltBoolean-Objekte. Wenn als Funktion aufgerufen, gibt er primitive Werte vom Typ Boolean zurück.
Instanz-Eigenschaften
Diese Eigenschaften sind auf Boolean.prototype definiert und werden von allen Boolean-Instanzen geteilt.
Boolean.prototype.constructor: Die Konstruktorfunktion, die das Instanzobjekt erzeugt hat. FürBoolean-Instanzen ist der initiale Wert derBoolean-Konstruktor.
Instanz-Methoden
Boolean.prototype.toString(): Gibt je nach Wert des Objekts einen Stringtrueoderfalsezurück. Überschreibt die MethodeObject.prototype.toString().Boolean.prototype.valueOf(): Gibt den primitiven Wert desBoolean-Objekts zurück. Überschreibt die MethodeObject.prototype.valueOf().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | any | false | Der Ausgangswert, der in einen booleschen Wert umgewandelt werden soll. Wird Boolean() als Funktion (ohne new) aufgerufen, liefert sie den primitiven boolean. Wird new Boolean(value) verwendet, entsteht ein Wrapper-Objekt. |
Rückgabewert
Boolean(value)) gibt sie den primitiven Wert true oder false zurück. Als Konstruktor aufgerufen (new Boolean(value)) gibt sie ein Boolean-Wrapper-Objekt zurück.Beispiele
Empfohlene Verwendung
// 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 als Funktion statt Konstruktor
const good = Boolean(expression);
const good2 = !!expression;
Nicht als Konstruktor verwenden
const bad = new Boolean(expression); // don't use this!
Boolean-Objekte sind immer truthy
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
Truthiness vs. loose equality
if ([]) {
console.log("[] is truthy");
}
if ([] == false) {
console.log("[] == false");
}
// [] is truthy
// [] == false
false-Werte erzeugen
const bNoParam = Boolean();
const bZero = Boolean(0);
const bNull = Boolean(null);
const bEmptyString = Boolean("");
const bfalse = Boolean(false);
true-Werte erzeugen
const btrue = Boolean(true);
const btrueString = Boolean("true");
const bfalseString = Boolean("false");
const bSuLin = Boolean("Su Lin");
const bArrayProto = Boolean([]);
const bObjProto = Boolean({});