Wie schalte ich einen Booleschen Wert um?


412

Gibt es eine wirklich einfache Möglichkeit, einen booleschen Wert in Javascript umzuschalten ?

Bisher ist das Beste, was ich außerhalb des Schreibens einer benutzerdefinierten Funktion habe, das Ternäre:

bool = bool ? false : true;

Antworten:


926
bool = !bool;

Dies gilt in den meisten Sprachen.


8
wirklich schöne Lösung, ich habe verwendet: test = (test == true)? Falsch Richtig;
Alpera

1
Dies muss initialisiert werden, es gibt also einen Weg ohne Initialisierung. Dies würde jedoch bei Objektattributen funktionieren.
user2846569

10
@ user2846569 Wenn Sie den Booleschen Wert umschalten, bedeutet dies, dass die Variable von Natur aus bereits initialisiert wurde. Sie könnten es erweitern bool = !bool || true;, um einen Standard zu haben, nehme ich an.
Jordanien

3
@ Jordan, der ReferenceError verursacht
user2846569

1
JB möchte eher eine unäre als eine binäre Anweisung. Vielleicht könnte es bool sein !! oder !! bool. Aber bisher habe ich noch nie eine solche Syntax gesehen. Ich stimme Jordan zu. Es ist schon so kurz.
Fandi Susanto

95

Wenn es Ihnen nichts ausmacht, dass der Boolesche Wert in eine Zahl konvertiert wird (entweder 0 oder 1), können Sie den Bitwise XOR Assignment Operator verwenden . Wie so:

bool ^= true;   //- toggle value.


Dies ist besonders gut, wenn Sie lange, beschreibende boolesche Namen verwenden, z.

var inDynamicEditMode   = true;     // Value is: true (boolean)
inDynamicEditMode      ^= true;     // Value is: 0 (number)
inDynamicEditMode      ^= true;     // Value is: 1 (number)
inDynamicEditMode      ^= true;     // Value is: 0 (number)

Dies ist für mich einfacher zu scannen als die Variable in jeder Zeile zu wiederholen.

Diese Methode funktioniert in allen (Haupt-) Browsern (und den meisten Programmiersprachen).


15
Da dies ohnehin zu einer ganzen Zahl umformuliert wird, kann es vereinfacht werden als:bool ^= 1
Kyle Mueller

47
Da der Wert auf eine Zahl gegossen wird, werden Sie nicht in der Lage sein zu tun , bool === falseoder bool === truemehr. Möglicherweise wird vorhandener Code beschädigt. Seien Sie also vorsichtig.
Aymericbeaumet



2
bool === tool ? bool : tool

Wenn Sie möchten, dass der Wert true ist, wenn tool(ein anderer Boolescher Wert) denselben Wert hat


2

Ich suchte nach einer Umschaltmethode, die dasselbe tut, mit Ausnahme eines Anfangswertes von nulloder undefined, wo es werden sollte false.

Hier ist es:

booly = !(booly != false)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.