551 Stimmen

Wie schaltet man einen booleschen Wert um?

Gibt es einen wirklich einfachen Weg, um einen Booleschen Wert in javascript umzuschalten?

Bisher ist das Beste, was ich außer dem Schreiben einer benutzerdefinierten Funktion erreicht habe, das Ternär:

bool = bool ? false : true;

1220voto

Jordan Punkte 30757
bool = !bool;

Dies trifft in den meisten Sprachen zu.

12 Stimmen

Wirklich schöne Lösung, die ich benutzt habe: test = (test == true)? false : true;

1 Stimmen

Dies erfordert eine Initialisierung, gibt es also einen Weg ohne Initialisierung. Obwohl dies bei Objektattributen funktionieren würde.

18 Stimmen

@user2846569, wenn Sie den booleschen Wert umschalten, bedeutet das, dass die Variable bereits initialisiert wurde. Sie könnten es erweitern auf bool = !bool || true; um einen Standardwert zu haben, nehme ich an.

123voto

Brock Adams Punkte 86168

Wenn es Ihnen nichts ausmacht, dass das Boolean in eine Zahl umgewandelt wird (entweder 0 oder 1), können Sie den Bitweisen XOR-Zuweisungsoperator verwenden. So:

bool ^= true;   //- Wert umschalten.

Das ist besonders gut, wenn Sie lange, beschreibende Boolean-Namen verwenden, z.B.:

let inDynamicEditMode   = true;     // Wert ist: true (Boolean)
inDynamicEditMode      ^= true;     // Wert ist: 0 (Zahl)
inDynamicEditMode      ^= true;     // Wert ist: 1 (Zahl)
inDynamicEditMode      ^= true;     // Wert ist: 0 (Zahl)

Für mich ist es einfacher zu scannen als die Variable in jeder Zeile zu wiederholen.

Dies funktioniert in allen (wichtigen) Browsern (und den meisten Programmiersprachen).

22 Stimmen

Da dies sowieso in einen Integer umgewandelt wird, kann es vereinfacht werden als: bool ^= 1

63 Stimmen

Da der Wert in eine Zahl umgewandelt wird, können Sie nicht mehr bool === false oder bool === true durchführen. Dies könnte vorhandenen Code zum Absturz bringen, also seien Sie vorsichtig.

0 Stimmen

Dies ist schrecklich, bitte nicht

16voto

xameeramir Punkte 25274

Lassen Sie uns das in Aktion sehen:

var b = true;

console.log(b); // true

b = !b;
console.log(b); // false

b = !b;
console.log(b); // true

Wie auch immer, gibt es keinen kürzeren Weg als den, den Sie derzeit haben.

13voto

Feeco Punkte 4854
bool = bool != true;

Einer der Fälle.

5voto

OfirD Punkte 6689

Ich habe nach einer Umschaltmethode gesucht, die dasselbe tut, aber einen anfänglichen Wert von null oder undefined auf false umschaltet.

Hier ist es:

booly = !(booly != false)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X