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.
undefined
wird zufalse
.null
wird zufalse
.0
,-0
undNaN
werden zufalse
; andere Zahlen werden zutrue
.0n
wird 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:
!!x
negiertx
zweimal, wasx
anhand des oben genannten Algorithmus in einen Boolean umwandelt. - Die
Boolean()
Funktion:Boolean(x)
verwendet den gleichen Algorithmus wie oben, umx
zu 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
,undefined
undnull
sind 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
false
sein.
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
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 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