É seguro assumir uma comparação estrita em uma instrução switch de JavaScript?


105

Eu tenho uma variável que pode ser booleana falseou um inteiro (incluindo 0). Quero colocá-lo em uma declaração switch como:

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

Em meus testes no Google Chrome, parece funcionar perfeitamente, mas estou um pouco nervoso para usá-lo porque temo que em alguns navegadores, se my_varestiver false, ele execute o primeiro caso desde então 0 == false.

Só estou me perguntando se há algo oficial em JavaScript que diga que a instrução switch usará uma comparação estrita 0 !== false, mas não consigo encontrar nada e não tenho certeza se isso funcionará bem em diferentes mecanismos de JavaScript. Alguém sabe se a comparação feita por uma instrução switch tem garantia de ser estrita?

Respostas:



34

http://qfox.nl/notes/110 responde à sua pergunta. (Esse cara sabe muito sobre os detalhes do JavaScript)

As opções em Javascript usam verificação estrita de tipo (===). Assim, você nunca precisa se preocupar com coerção, o que impede alguns wtfjs :). Se, por outro lado, você estava contando com a coerção, azar porque você não pode forçá-la.


jsfiddle.net/to469fLm/4 , você pode generalizar a função de coação para atender às suas necessidades
darethas

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.