¿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
zhuyue -
Mike Young -
Saddam Hossain -
Probir Sarkar -
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
falsy
y son los siguientes:0
-0
0n
false
null
undefined
NaN
'', ""
Todos estos valores son considerados como falsos para el lenguaje.
Como
0
es un valorfalsy
entonces, 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
true
por coerción de tiposPasemos al siguiente ejemplo:
Al usar el operador estricto de comparación
===
comparamos tanto el valor como el tipo de dato,false
es de tipoboolean
y0
es de tiponumber
ergo, 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.
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.
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