Bagaimana cara mengganti boolean?


412

Apakah ada cara yang sangat mudah untuk mengganti nilai boolean dalam javascript ?

Sejauh ini, yang terbaik yang saya dapatkan di luar menulis fungsi kustom adalah ternary:

bool = bool ? false : true;

Jawaban:


926
bool = !bool;

Ini berlaku di sebagian besar bahasa.


8
solusi yang sangat bagus, saya menggunakan: test = (test == true)? salah benar;
alpera

1
Ini perlu inisialisasi, jadi apakah ada cara tanpa inisialisasi. Padahal ini akan bekerja pada atribut objek.
user2846569

10
@ user2846569, jika Anda mengaktifkan boolean, itu berarti bahwa secara alami variabel telah diinisialisasi. Anda bisa mengembangkannya bool = !bool || true;menjadi default, saya kira.
Jordan

3
@Jordan Yang menyebabkan ReferenceError
user2846569

1
JB menginginkan pernyataan unary daripada pernyataan biner. Mungkin itu bisa bool !! atau !! bool. Tapi sejauh ini saya belum pernah melihat sintaks seperti itu. Saya setuju dengan Jordan. Ini sudah sangat singkat.
Fandi Susanto

95

Jika Anda tidak keberatan boolean dikonversi menjadi angka (baik 0 atau 1), Anda dapat menggunakan Bitign XOR Assignment Operator . Seperti itu:

bool ^= true;   //- toggle value.


Ini sangat baik jika Anda menggunakan nama boolean yang panjang dan deskriptif, misalnya:

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)

Ini lebih mudah bagi saya untuk memindai daripada mengulangi variabel di setiap baris.

Metode ini berfungsi di semua browser (utama) (dan sebagian besar bahasa pemrograman).


15
Karena ini merombak ke integer, itu dapat disederhanakan sebagai:bool ^= 1
Kyle Mueller

47
Karena nilai diberikan ke angka, Anda tidak akan dapat melakukan bool === falseatau bool === truelagi. Mungkin merusak kode yang ada, jadi berhati-hatilah.
aymericbeaumet



2
bool === tool ? bool : tool

jika Anda ingin nilai tetap true jika tool(boolean lain) memiliki nilai yang sama


2

Saya sedang mencari metode toggling yang melakukan hal yang sama, kecuali nilai inital nullatau undefined, di mana seharusnya false.

Ini dia:

booly = !(booly != false)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.