Valores truthy y falsy en JavaScript
En contextos donde un boolean es requerido, suele ser común utilizar valores no booleanos. En este post te muestro cuáles son los valores equivalentes a false (falsy) y cuáles a true (truthy).
En los contextos en que un valor booleano es lo esperado, y se utiliza en su lugar un valor que diferente tipo, JavaScript lo fuerza de manera implícita a comportarse como booleano.
Los valores convertibles a false
se conocen como falsy o falsey, y son aquellos que cuando se encuentran en un contexto de booleano, JavaScript los convierte a false
:
0
(cero)-0
(cero negativo)0n
(cero de tipo BigInt)""
(comillas dobles vacías)''
(comillas simples vacías)``
(tildes invertidas vacías)null
undefined
NaN
Entonces, si utilizaramos cualquiera de estos valores en un contexto de condicional, la condición resultara falsa.
var resultado = Math.round("cero");
// → NaN
// por lo tanto resultado es falsy
if (resultado) {
console.log("Esto nunca se mostrará");
}
Por consiguiente, el resto de los valores en JavaScript son convertibles a true
, y se consideran truthy.
Esto es posible gracias al mecanismo de coerción. Básicamente, cuando lo que se espera es un booleano, JavaScript fuerza el valor al tipo boolean, en una operación equivalente a llamar la función global Boolean
sobre él.
// todos los siguientes retornan `false`
Boolean(false)
Boolean(0)
Boolean(-0)
Boolean(0n)
Boolean("")
Boolean('')
Boolean(``)
Boolean(null)
Boolean(undefined)
Boolean(NaN)
// cualquier otro valor retorna `true`
Boolean(true)
Boolean([])
Boolean({})
Boolean('Hola mundo')
Boolean(new Date())