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)nullundefinedNaN
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())