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 Satzes darstellen.
Beschreibung
Boolean-Werte werden typischerweise von Relationsoperatoren, Gleichheitsoperatoren und dem logischen NICHT (!) erzeugt. Sie können auch durch 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 Boolean-Werte sind.
Boolean-Werte werden typischerweise in Bedingungstests verwendet, wie z.B. in der Bedingung der if...else- und while-Anweisungen, dem bedingten Operator (? :), oder dem Prädikatrückgabewert von Array.prototype.filter().
Es ist selten notwendig, etwas explizit in einen Boolean-Wert umzuwandeln, da JavaScript dies automatisch in Boolean-Kontexten tut, sodass Sie jeden Wert so verwenden können, als ob er ein Boolean wäre, basierend auf seiner Wahrhaftigkeit. Es wird empfohlen, möglichst if (condition) und if (!condition) anstelle von if (condition === true) oder if (condition === false) in Ihrem eigenen Code zu verwenden, um diesen Konvention nutzen zu können. Dennoch kann es hilfreich sein, sicherzustellen, dass Werte, die Bedingungen darstellen, 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 den doppelten NICHT Operator. Verwenden Sie nicht 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 umschlossener Wert false ist, wahrheitsgemäß sind und in Fällen wie bedingten Anweisungen zu true ausgewertet werden. (Siehe auch den Abschnitt boolean coercion 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 Boolean als Konstruktor verwenden.
Boolean Umwandlung
Viele eingebaute Operationen, die Booleans erwarten, wandeln ihre Argumente zuerst 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; andere BigInts werden zutrue.- Der leere String
""wird zufalse; andere Strings werden zutrue. - Symbole werden zu
true. - Alle Objekte werden
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: Anders als bei anderen Typumwandlungen wie String-Umwandlung oder Zahl-Umwandlung, versucht die Boolean-Umwandlung nicht, Objekte in Primitiven umzuwandeln durch den Aufruf von Benutzerfunktionen.
Mit anderen Worten, es gibt nur wenige Werte, die zu false umgewandelt werden - diese werden als falsy bezeichnet. Alle anderen Werte werden als truthy bezeichnet. Die Wahrhaftigkeit eines Wertes ist wichtig, wenn sie mit logischen Operatoren, bedingten Anweisungen oder in einem Boolean-Kontext verwendet wird.
Es gibt zwei Möglichkeiten, denselben Effekt in JavaScript zu erzielen.
- Doppelter NICHT:
!!xnegiertxzweimal, wasxanhand des oben genannten Algorithmus in einen Boolean umwandelt. - Die
Boolean()Funktion:Boolean(x)verwendet den gleichen Algorithmus wie oben, umxzu konvertieren.
Beachten Sie, dass Wahrhaftigkeit nicht dasselbe ist wie die lose Gleichheit zu true oder false.
if ([]) {
console.log("[] is truthy");
}
if ([] == false) {
console.log("[] == false");
}
// [] is truthy
// [] == false
[] ist wahrheitsgemäß, aber es ist auch lose gleich false. Es ist wahrheitsgemäß, weil alle Objekte wahrheitsgemäß sind. Beim Vergleich mit false, das ein Primitive ist, wird [] auch in ein Primitive umgewandelt, das über Array.prototype.toString() "" ergibt. Beim Vergleich von Strings und Booleans werden beide in Zahlen umgewandelt, und beide werden zu 0, so dass [] == false true ist. Allgemein unterscheiden sich Falschheit und == false in den folgenden Fällen:
NaN,undefinedundnullsind falsch, aber nicht lose gleichfalse."0"(und andere String-Literale, die nicht""sind, aber zu 0 umgewandelt werden) sind wahrheitsgemäß, aber lose gleichfalse.- Objekte sind immer wahrheitsgemäß, aber ihre primitive Repräsentation kann lose gleich
falsesein.
Wahrheitsgemäße Werte sind sogar noch weniger wahrscheinlich, lose gleich true zu sein. Alle Werte sind entweder wahrheitsgemäß oder falsch, aber die meisten Werte sind lose weder true noch false gleich.
Konstruktor
Boolean()-
Erstellt
Boolean-Objekte. Bei einem Funktionsaufruf gibt er primitive Werte des Typs Boolean zurück.
Instanzeigenschaften
Diese Eigenschaften sind auf Boolean.prototype definiert und werden von allen Boolean-Instanzen gemeinsam genutzt.
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 mit entweder
trueoderfalsezurü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 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 Language Specification # sec-boolean-objects |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Boolean
- Boolean-Primitiven
- Boolean-Datentyp auf Wikipedia