He estado buscando en la función de _.isEqual
Underscore.js y una sección del código dice así:¿Es esta línea de Underscore.js realmente necesaria la comprobación de igualdad?
if (a === b) return true;
if (typeof a !== typeof b) return false;
if (a == b) return true;
Me pregunto si hay algún caso en el que se pudo llegar a la tercera declaración y evaluar a true
?
Edit: Para que quede claro, este no es mi propio código, estoy leyendo, estoy leyendo la fuente de Underscore, en particular, this line y tenía curiosidad sobre por qué lo están haciendo.
Tiene que haber un caso de bordes extraños donde esto es posible ... –
@nickf: Teniendo en cuenta que '==' y '===' son idénticos cuando los tipos son iguales, no puedo ver cómo la primera y la tercera prueba proporcionarán un resultado diferente. Incluso en el caso de 'null' donde el' typeof' difiere del 'Type' interno, no coacciona a ningún valor excepto' undefined', que tiene un valor 'typeof' diferente. Y si hay * algún * caso marginal, ¿cómo sabes que querrías * obligarlo? Parece extraño tener una prueba '==' y una '===' de los mismos valores. O bien quieres una coerción de tipo o no. – user113716
... Debo aclarar que con * "usted" * en el comentario anterior, no quise dar a entender * nickf *, sino * persona *. – user113716