MDC describe al ==
operador de la siguiente manera :
Si los dos operandos no son del mismo tipo, JavaScript convierte los operandos y luego aplica una comparación estricta. Si alguno de los operandos es un número o un booleano, los operandos se convierten en números si es posible; de lo contrario, si alguno de los operandos es una cadena, el otro operando se convierte en una cadena si es posible.
Con esto en mente, evaluaría "true" == true
lo siguiente:
- ¿Son del mismo tipo? No
- ¿Es el operando un número o un booleano? si
- ¿Podemos convertir ambos en un número? No (
isNaN(Number("true")) // true
) - ¿Es alguno de los operandos una cadena? si
- ¿Podemos convertir el otro operando en una cadena? Si (
String(true) === "true" // true
)
Terminé con las cadenas "true"
y "true"
, que debería evaluar true
, pero JavaScript muestra falso.
¿Qué me he perdido?