En els contextos en què un valor booleà és que s’esperava, i s’utilitza en el seu lloc un valor que diferent tipus, JavaScript ho força de manera implícita a comportar-se com booleà .
els valors convertibles a false
es coneixen com falsy o falsey, i són aquells que quan es troben en un context de booleà, JavaScript els converteix a false
:
-
0
(zero) -
-0
(zero negatiu) -
0n
(zero de tipus BIGINT) -
""
(cometes dobles buides) -
''
(cometes simples buides) -
``
(accents invertides buides) -
null
-
undefined
-
NaN
Llavors, si utilitzéssim qualsevol d’aquests valors en un context de condicional, la condició resultés falsa.
var resultado = Math.round("cero");// → NaN// por lo tanto resultado es falsyif (resultado) { console.log("Esto nunca se mostrará");}
Per tant, la resta dels valors en JavaScript són convertibles a true
, i es consideren truthy.
Això és possible gràcies a l’mecanisme de coerció. Bàsicament, quan el que s’espera és un booleà, JavaScript força el valor a el tipus boolean, en una operació equivalent a cridar la funció global Boolean
sobre ell.
// 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())