¿Puedes explicar este código?
console.log(false == 0) // true
console.log(false === 0) // false
¿Por qué false == 0 es true y false === 0 es false?
Explicación en el primer comentario.
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (5)
JavaScript tiene una peculiaridad que se denomina coerción de tipos. Al intentar realizar algún tipo de operación o comparación ambigua el lenguaje tratará de realizar una conversión de tipos implícita para poder devolver un resultado más o menos lógico, el problema acá radica en que muchas veces el resultado obtenido será diferente al esperado.
Veamos el primer ejemplo:
En javascript existen lo que denomina como valores
falsyy son los siguientes:0-00nfalsenullundefinedNaN'', ""Todos estos valores son considerados como falsos para el lenguaje.
Como
0es un valorfalsyentonces, aunque no lo veamos, javascript hace algo como esto tras bambalinas:Y como estamos usando el operador de comparación débil
==nos limitamos a comparar los valores mas NO los tipos de datos.En conclusión, la respuesta es
truepor coerción de tiposPasemos al siguiente ejemplo:
Al usar el operador estricto de comparación
===comparamos tanto el valor como el tipo de dato,falsees de tipobooleany0es de tiponumberergo, la respuesta esfalse.En otras palabras, también es correcto afirmar que al usar el
===javascript no hace coerciones de tipo, por ello es ampliamente sugerido usarlo.Espero que la explicación sea de tu agrado.
Excelente
console.log(false == 0)
El código de arriba es true, debido a que no compara el tipo de dato con el que estás haciendo la condicional. Debido a que 0 es false y 1 es true, esto hace que false y 0 sean lo mismo en el resultado final.
Mientras que en console.log(false===0)
Ese === verifica si es el mismo tipo de dato y si el valor es el mismo.
Es false porque false es un booleano y 0 es un entero, entonces no son el mismo tipo de datos por lo cual dice false.
booleano no es igual a entero, se cual sea su valor.
Esto es lo que aprendí yo en su día cuando aprendí javascript.
Un saludo.
Mm creo que porque el operador == hace una conversión de los operandos al mismo tipo y el === no... ni me acuerdo dónde ví eso. Ya me dio duda jeje
Lo hermoso de Javascript es que todo es posible y la magia existe.
La gente no lo entiende y piensa que son falencias en el lenguaje.