Bir JavaScript anahtar deyiminde kesin karşılaştırma yapmak güvenli midir?


105

Boole falseveya tam sayı (0 dahil) olabilen bir değişkenim var . Bunu aşağıdaki gibi bir anahtar ifadesine koymak istiyorum:

switch(my_var){
    case 0:
         // Do something
         break;
    case 1:
         // Do something else
         break;
    case false:
         // Some other code
}

Google Chrome'da benim testlerde, mükemmel iş gibi görünüyor, ama ben eğer bazı tarayıcılarda, korkuyorum çünkü kullanmak için biraz gerginim my_varolduğunu false, bu yana ilk davayı yürütmek olabilir 0 == false.

JavaScript'te switch ifadesinin böyle katı bir karşılaştırma kullanacağını söyleyen resmi bir şey olup olmadığını merak ediyorum 0 !== false, ancak kendim hiçbir şey bulamıyorum ve bunun farklı JavaScript motorlarında iyi çalışıp çalışmayacağından emin değilim. Switch ifadesiyle yapılan karşılaştırmanın kesin olup olmadığını bilen var mı?

Yanıtlar:



34

http://qfox.nl/notes/110 sorunuzu yanıtlıyor. (Bu adam JavaScript'in özü hakkında çok şey biliyor)

Javascript'teki anahtarlar katı tür denetimi kullanır (===). Yani zorlama konusunda asla endişelenmenize gerek yok, bu da birkaç wtfj'yi engelliyor :). Öte yandan, zorlamaya güveniyorsan, şanssızlık çünkü onu zorlayamazsın.


jsfiddle.net/to469fLm/4 , ihtiyaçlarınıza ulaşmak için
zorlayıcı

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.