DEV Community

Discussion on: Paracetamol.js💊| #4: Explica este código JavaScript

Collapse
 
duxtech profile image
Cristian Fernando • Edited

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:

console.log(false == 0)
Enter fullscreen mode Exit fullscreen mode

En javascript existen lo que denomina como valores falsy y son los siguientes:

  • 0
  • -0
  • 0n
  • false
  • null
  • undefined
  • NaN
  • Cualquier tipo de cadena vacía: '', ""

Todos estos valores son considerados como falsos para el lenguaje.

Como 0 es un valor falsy entonces, aunque no lo veamos, javascript hace algo como esto tras bambalinas:

console.log(false == false)
Enter fullscreen mode Exit fullscreen mode

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 tipos

Pasemos al siguiente ejemplo:

console.log(false === 0)
Enter fullscreen mode Exit fullscreen mode

Al usar el operador estricto de comparación === comparamos tanto el valor como el tipo de dato, false es de tipo boolean y 0 es de tipo number ergo, la respuesta es false.
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.

Collapse
 
chema profile image
José María CL

Excelente