Wie kann ich überprüfen, ob der Typ einer Variablen vom Typ Boolean ist?
Ich meine, es gibt einige Alternativen wie:
if(jQuery.type(new Boolean()) === jQuery.type(variable))
//Do something..
Aber das scheint mir nicht schön zu sein.
Gibt es einen saubereren Weg, um dies zu erreichen?
javascript
jquery
types
Matias Cicero
quelle
quelle
true
oderfalse
vom Typ Boolean?!!( ... some expression ...)
und das Ergebnis wird ein Boolescher Wert sein.true
undfalse
sind Grundelemente vom Typboolean
. Der Boolesche Typ Capital-B ist ein Objekt-Wrapper-Typ für Boolesche Grundelemente.if (new Boolean(false)) alert("hi");
- Ein Boolesches Objekt in Großbuchstaben B ist immer "wahr", unabhängig vom zugrunde liegenden Booleschen Wert in Little-B.Antworten:
Dafür gibt
typeof
es da. Die Klammern sind optional, da es sich um einen Operator handelt .quelle
typeof
.typeof
ist keine Funktion. 2) Die Verwendung des Triple-Operators === withtypeof
ist nicht erforderlich, da immer eine Zeichenfolge zurückgegeben wird (afaik, aber soweit ich mich erinnere, gab es für einige sehr alte Browser einen anderen Fall). 3)typeof
und String-Vergleiche sind langsam. Benutze sie nicht. Überprüfen Sie direkt mit(variable === true || variable === false)
(ich schlage vor, eine Funktion zu schreiben).typeof(variable) === typeof(true)
robuster?name
ist eine globale Fenstereigenschaft mit einem speziellen Getter Entwickler.mozilla.org/en-US/docs/Web/API/Window/nametypeof true
statt zu verwenden"boolean"
. Neue Versionen von ECMAScript werden niemals wichtige Änderungen erfahren.Wenn Sie nur nach einem primitiven Wert suchen möchten
Wenn Sie aus irgendeinem seltsamen Grund Boolesche Werte mit dem Konstruktor erstellt haben, handelt es sich nicht wirklich um Boolesche Werte, sondern um Objekte, die einen primitiven Booleschen Wert enthalten. Eine Möglichkeit, nach primitiven Booleschen Werten und Objekten zu suchen, die mit erstellt wurden,
new Boolean
besteht darin, Folgendes zu tun:Code-Snippet anzeigen
quelle
new Boolean()
Wert ist , selbst wenn sie mit erstellt wurde , was technisch gesehen kein Boolescher Wert ist, sondern ein Objekt, aber dennoch gültig ist ein boolescher Wert.new Boolean()
ein Objekt zurückgegeben wird (siehe Kommentare zur Frage). Aber was auch immer :)typeof variable === typeof new Boolean()
und wahrscheinlich nur eine regelmäßige Überprüfung wünscht, aber irgendwie in eine seltsame jQuery-Syntax verwickelt ist.bool
param übergeben warnull
dastypeof bool === 'object'
würde immer noch zu bewerten und eineTypeError: Cannot read property 'valueOf' of null
Ausnahme wäre auf den Anruf zu werfentypeof bool.valueOf()
. So würde ich das letzte Zeile zu lesen , ändern:(typeof bool === 'object' && bool && typeof bool.valueOf() === 'boolean');
die nur evaluieren , wennbool
ist nicht null.Mit reinem JavaScript können Sie einfach
typeof
etwas wietypeof false
oder verwendentypeof true
und es wird zurückkehren"boolean"
...Aber das ist nicht die einzige Möglichkeit, dies zu tun. Ich erstelle Funktionen unten, um verschiedene Möglichkeiten aufzuzeigen, wie Sie in JavaScript nach Booleschen Werten suchen können, und auch verschiedene Möglichkeiten, wie Sie dies in einigen neuen Frameworks tun können. Beginnen wir mit dieser:
Oder einzeiliger ES6- Weg ...
und nenne es wie!
Auch im Unterstrich- Quellcode überprüfen sie dies folgendermaßen (mit dem _ am Anfang des Funktionsnamens):
Auch in jQuery können Sie dies folgendermaßen überprüfen:
Wenn Sie in React propTypes verwenden, können Sie überprüfen, ob ein Wert wie folgt boolesch ist:
Wenn Sie TypeScript verwenden , können Sie auch den Typ Boolean verwenden :
Eine andere Möglichkeit besteht darin, den Wert in einen Booleschen Wert umzuwandeln und zu prüfen, ob er immer noch genau derselbe ist.
oder wie:
und nenn es!
Es wird nicht empfohlen, dafür ein Framework zu verwenden, da es sich wirklich um eine einfache Überprüfung in JavaScript handelt.
quelle
new Boolean(true) === new Boolean(true)
sollte false zurückgeben (da die Referenzen unterschiedlich sind). DeshalbisBoolean(new Boolean(true))
sagt der Wille falsch, während er wahr sein muss (new Boolean(true)
vom Typ boolean ).Es gibt drei "Vanille" -Möglichkeiten, um dies mit oder ohne jQuery zu überprüfen.
Zuerst müssen Sie die boolesche Auswertung durch Zwang erzwingen und dann prüfen, ob sie dem ursprünglichen Wert entspricht:
Eine einfache
typeof
Überprüfung durchführen:Einen völlig übertriebenen und unnötigen Instanziierung eines Klassen-Wrappers auf einem Primativ durchführen:
Der dritte wird nur zurückgegeben,
true
wenn Sie einenew Boolean
Klasse erstellen und diese übergeben.Um den Zwang der Primitiven (wie in Nr. 1 gezeigt) zu erläutern, können alle Primitivtypen auf folgende Weise überprüft werden:
Boolean
::Number
::String
::quelle
typeof
? Ich bezweifle es stark.typeof
ist auch 1 Zwang, aber dietypeof
Methode macht ein paar Getter und Vergleiche innerhalb von + 1 Vergleich ganz am Ende. Hier ist die V8-Referenz fürtypeof
!!
ist schneller, man sagtBoolean
ist schneller. Nur ein Hinweis darauf, wie klein das Delta zwischen den Tests ist. Boolesche Prüfungen sind schnell. jsperf.com/bool-not-not jsperf.com/bool-vs-doublenottypeof val === "boolean"
optimal.Sie können reines Javascript verwenden, um dies zu erreichen:
quelle
Wenn Sie möchten, dass Ihre Funktion auch boolesche Objekte validieren kann, muss die effizienteste Lösung sein:
quelle
Der zuverlässigste Weg, um den Typ einer Variablen in JavaScript zu überprüfen, ist der folgende :
Der Grund für diese Komplikation ist , dass
typeof true
Erträge ,"boolean"
währendtypeof new Boolean(true)
Renditen"object"
.quelle
"boolean"
wenn der Wert wirklich ein Objekt ist? Das scheint mir nicht sehr praktisch zu sein. Boolesche Objekte müssen ohnehin anders behandelt werden als boolesche Grundelemente.Ich würde mich für Lodash entscheiden: isBoolean prüft, ob die übergebene Variable entweder ein primitives boolesches oder ein boolesches Wrapper-Objekt ist, und berücksichtigt daher alle Fälle.
quelle
Sie können eine Funktion erstellen, die das
typeof
auf ein Argument überprüft .quelle
Manchmal brauchen wir einen einzigen Weg, um das zu überprüfen. Art funktioniert nicht für Datum usw. Also machte ich es einfach durch
Auch für
Number
,String
,Boolean
usw. wir oft müssen die Art in einer einzigen Art und Weise überprüfen ...quelle
Das Erstellen von Funktionen,
isBoolean
die Oneliner enthalten,typeof v === "boolean"
scheint auf lange Sicht sehr unhandlich zu sein. Ich bin überrascht, dass fast jeder vorschlägt, eine eigene Funktion zu erstellen. Es scheint der gleiche Krebs zu sein wie die Erweiterung nativer Prototypen.nur auswendig lernen
typeof v === "boolean"
und das ist alles. Fügen Sie Ihrer IDE eine Vorlage hinzu, um sie mit einer Verknüpfung aus drei Buchstaben zu versehen und glücklich zu sein.quelle
v === true || v === false
, die im Fall von 2 Überprüfungen durchführtfalse
. Rangliste: (1 - beide praktisch gleich)typeof v === 'boolean
undtypeof v === typeof true
(2)isBoolean(v)
, (3)v === true || v === false
.wenn Sie eine Zeichenfolge haben
quelle
val === false || val === true
.typeof variable == typeof true
.Das kürzeste, aber überhaupt nicht lesbare :
!!val === val
.Erläuterung:
Tests:
quelle
In nodejs können wir mit node-boolify isBoolean () verwenden;
quelle
Noch eine Entscheidung mit der Pfeilfunktion es2015
quelle