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;
Chris Dutrow
sumber

Jawaban:

926
bool = !bool;

Ini berlaku di sebagian besar bahasa.

Yordania
sumber
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).

Brock Adams
sumber
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
12
bool = bool != true;

Salah satunya.

Feeco
sumber
2
bool === tool ? bool : tool

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

Ardhi
sumber
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)
Hei jude
sumber