2012-08-10 24 views
5

Garip beni sıkışmış bir kod parçasını gördüm ne anlama gelir. Anahtar (! 0) javascript'te ne anlama geliyor? Bu tekniğin kullanılması yararlı olabilecek bazı durumlar nelerdir?anahtarı (! 0) o

jsTree birkaç yerde kullanır ama yabancı görünüyor. Eminim bunun arkasında iyi bir nedeni vardır, ama bunu çözemez. Bu boolean true için durumların her kıyaslıyor

switch(!0) { 
    case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied."; 
    case ($.isFunction(s.data)): //... 
           break; 
} 
+2

Birisi kodlarını söyleyebilirim karartmak için çalışıyor:

switch (true) { case (condition): do something; break; case (condition): do something; break; case (condition): do something; break; } 

aynı şekilde çalışır. Bu, eğer 'if' ve 'if else 'kullanmamanın hacky bir yoludur. –

+0

Düz kalça tarzı yo. –

+0

Mümkün yinelenen [Ne yapar! 1 ve! 0 Javascript içinde?] (Http://stackoverflow.com/questions/11550681/what-does-1-and-0-mean-in-javascript) –

cevap

9

: Burada

http://www.jstree.com/

kod klip. !s.data && !s.ajax true olarak değerlendirilirse

case (!s.data && !s.ajax) 

Detaylandırılması

, o zaman bu durum yürütülmesi için seçilecektir.

switch(true) bir switch(!0) sadece switch(true) aynıdır switch(!0)

+0

yeni bir terim isterseniz yorum +1 Lütfen cevabınızı detaylandırın – MMeah

+2

Sadece neden "düzelme (gerçek)" demediğini merak ettiniz mi? ... – cHao

+0

Sadece ilk gerçekte mi yoksa koşmak mı tüm gerçek vakalar? – MMeah

2

aynıdır.

Bu model:

if (condition) { 
    do something; 
} else if (condition) { 
    do something; 
} else if (condition) { 
    do something; 
} 
+0

if deyimi hariç, "break" kaldırılırsa, düşüşe izin vermez. – MMeah

+1

@MMeah: Evet, bu doğru. Bu onu kullanman gerektiği anlamına gelmez, ama ... – Guffa