Czy można bezpiecznie założyć ścisłe porównanie w instrukcji przełącznika JavaScript?


105

Mam zmienną, która może być wartością logiczną falselub liczbą całkowitą (w tym 0). Chcę umieścić to w instrukcji przełącznika, takiej jak:

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

W moich testach w Google Chrome wydaje się działać idealnie, ale trochę się denerwuję, gdy go używam, ponieważ obawiam się, że w niektórych przeglądarkach, jeśli my_vartak false, może to wykonać pierwszy przypadek od tego czasu 0 == false.

Zastanawiam się tylko, czy w JavaScript jest coś oficjalnego, które mówi, że instrukcja switch będzie używać ścisłego porównania, takiego 0 !== false, ale sam nie mogę niczego znaleźć i nie jestem pewien, czy to zadziała dobrze w różnych silnikach JavaScript. Czy ktoś wie, czy porównanie wykonane przez instrukcję przełącznika gwarantuje ścisłe?

Odpowiedzi:



34

http://qfox.nl/notes/110 odpowie na Twoje pytanie. (Ten facet dużo wie o podstawach JavaScript)

Przełączniki w JavaScript używają ścisłego sprawdzania typu (===). Więc nigdy nie musisz się martwić przymusem, który zapobiega kilku wtfjs :). Jeśli z drugiej strony liczyłeś na przymus, pech, bo nie możesz go wymusić.


jsfiddle.net/to469fLm/4 , możesz uogólnić funkcję wymuszania , aby spełnić swoje potrzeby
darethas

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.