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.