Javascript

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