Boole nasıl değiştirilir?


412

Javascript'te bir boole değerini değiştirmenin gerçekten kolay bir yolu var mı ?

Şimdiye kadar, özel bir işlev yazmanın dışında aldığım en iyi şey üçlü:

bool = bool ? false : true;

Yanıtlar:


926
bool = !bool;

Bu çoğu dilde geçerlidir.


8
gerçekten güzel bir çözüm, ben kullanıyordum: test = (test == true)? yanlış doğru;
— alpera

1
Bu başlatma gerekli, böylece başlatma olmadan bir yolu var. Bu nesne nitelikleri üzerinde çalışmasına rağmen.
— user2846569

10
@ user2846569, eğer boole'yi değiştirirseniz, bu, değişkene göre değişkenin zaten başlatılmış olduğu anlamına gelir. bool = !bool || true;Sanırım bir varsayılana sahip olmak için genişletebilirsiniz .
— Ürdün

3
@Jordan ReferenceError neden olur
— user2846569

1
JB, ikili ifade yerine tekli bir ifade ister. Belki de bool olabilir! veya !! bool. Ama şimdiye kadar hiç böyle bir sözdizimi görmedim. Ürdün'e katılıyorum. Şimdiden çok kısa.
— Fandi Susanto

95

Boolean'ın bir sayıya (0 veya 1) dönüştürülmesini önemsemiyorsanız , Bitwise XOR Atama İşleci'ni kullanabilirsiniz . Şöyle ki:

bool ^= true;   //- toggle value.


Bu, özellikle uzun, açıklayıcı boole isimleri (EG) kullanıyorsanız iyidir:

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)

Bunu taramak benim için her satırdaki değişkeni tekrar etmekten daha kolaydır.

Bu yöntem tüm (büyük) tarayıcılarda (ve çoğu programlama dilinde) çalışır.


15
Bu zaten bir tamsayı olduğu için, basitleştirilebilir:bool ^= 1
— Kyle Mueller

47
Değer bir sayıya çevrildiğinden, artık yapamazsınız bool === falseveya bool === trueartık yapamazsınız . Mevcut kodu kırabilir, bu yüzden dikkatli olun.
— aymericbeaumet



2
bool === tool ? bool : tool

tool(başka bir boolean) aynı değere sahipse değerin doğru olmasını istiyorsanız


2

Bir inital değeri nullveya undefinedolması gerektiği yerde , aynı yapan bir geçiş yöntemi sonra arıyordu false.

İşte burada:

booly = !(booly != false)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.