Come attivare / disattivare un booleano?


412

C'è un modo davvero semplice per attivare o disattivare un valore booleano in JavaScript ?

Finora, il meglio che ho fuori dallo scrivere una funzione personalizzata è il ternario:

bool = bool ? false : true;

Risposte:


926
bool = !bool;

Questo è vero nella maggior parte delle lingue.


8
soluzione davvero bella, stavo usando: test = (test == true)? falsa verità;
alpera,

1
Questo ha bisogno di inizializzazione, quindi c'è un modo senza inizializzazione. Anche se questo avrebbe funzionato sugli attributi degli oggetti.
user2846569,

10
@utente2846569, se si attiva / disattiva il valore booleano, ciò significa che per natura la variabile è già stata inizializzata. Potresti espanderlo bool = !bool || true;per avere un valore predefinito, suppongo.
Giordania,

3
@Jordan Che causa ReferenceError
user2846569

1
JB vuole un'istruzione unaria piuttosto che un'istruzione binaria. Forse potrebbe essere bool !! o !! bool. Ma finora non ho mai visto una tale sintassi. Sono d'accordo con la Giordania. È già così corto.
Fandi Susanto,

95

Se non ti dispiace che il booleano venga convertito in un numero (che è 0 o 1), puoi utilizzare l'operatore di assegnazione BitOR XOR . Così:

bool ^= true;   //- toggle value.


Ciò è particolarmente utile se si utilizzano nomi booleani lunghi e descrittivi, ad esempio:

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)

Per me è più facile scansionare che ripetere la variabile in ogni riga.

Questo metodo funziona in tutti i browser (principali) (e nella maggior parte dei linguaggi di programmazione).


15
Dato che questo si rifà comunque a un numero intero, può essere semplificato come:bool ^= 1
Kyle Mueller,

47
Poiché il valore è colato a un numero, si sarà in grado di fare bool === falseo di bool === truepiù. Potrebbe rompere il codice esistente, quindi fai attenzione.
aymericbeaumet,



2
bool === tool ? bool : tool

se vuoi che il valore sia vero se tool(un altro booleano) ha lo stesso valore


2

Stavo cercando un metodo di commutazione che fa lo stesso, tranne per un valore iniziale di nullo undefined, dove dovrebbe diventare false.

Ecco qui:

booly = !(booly != false)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.