¿Es seguro asumir una comparación estricta en una declaración de cambio de JavaScript?


105

Tengo una variable que puede ser booleana falseo un número entero (incluido 0). Quiero ponerlo en una declaración de cambio como:

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

En mis pruebas en Google Chrome, parece funcionar perfectamente, pero estoy un poco nervioso por usarlo porque me temo que en algunos navegadores, si my_vares así false, podría ejecutar el primer caso desde entonces 0 == false.

Me pregunto si hay algo oficial en JavaScript que diga que la declaración de cambio usará una comparación estricta 0 !== false, pero no puedo encontrar nada yo mismo, y no estoy seguro de si esto funcionará bien en diferentes motores de JavaScript. ¿Alguien sabe si se garantiza que la comparación realizada por una declaración de cambio sea estricta?

Respuestas:



34

http://qfox.nl/notes/110 responde a su pregunta. (Este tipo sabe mucho sobre el meollo de JavaScript)

Los conmutadores en Javascript usan una verificación de tipo estricta (===). Por lo tanto, nunca tendrá que preocuparse por la coerción, que evita algunos wtfjs :). Si por otro lado contabas con la coerción, mala suerte porque no puedes forzarla.


jsfiddle.net/to469fLm/4 , puede generalizar la función de
coerción

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.