Est-il sûr de supposer une comparaison stricte dans une instruction de commutation JavaScript?


105

J'ai une variable qui peut être booléenne falseou un entier (y compris 0). Je veux le mettre dans une instruction switch comme:

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

Dans mes tests dans Google Chrome, cela semble fonctionner parfaitement, mais je suis un peu nerveux à l'idée de l'utiliser car j'ai peur que dans certains navigateurs, si my_varc'est le cas false, il puisse exécuter le premier cas depuis 0 == false.

Je me demande simplement s'il y a quelque chose d'officiel dans JavaScript qui dit que l'instruction switch utilisera une comparaison stricte de telle sorte que 0 !== false, mais je ne trouve rien moi-même, et je ne suis pas sûr que cela fonctionnera bien dans différents moteurs JavaScript. Est-ce que quelqu'un sait si la comparaison effectuée par une instruction switch est garantie d'être stricte?

Réponses:



34

http://qfox.nl/notes/110 répond à votre question. (Ce gars en sait beaucoup sur les détails de JavaScript)

Les commutateurs en Javascript utilisent une vérification de type stricte (===). Vous n'avez donc jamais à vous soucier de la coercition, ce qui empêche quelques wtfjs :). Si par contre vous comptiez sur la coercition, pas de chance car vous ne pouvez pas la forcer.


jsfiddle.net/to469fLm/4 , vous pouvez généraliser la fonction de
coercition pour

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.