Truthy, Falsy y Nullish
Cómo JavaScript evalúa diferentes valores como verdaderos o falsos en contextos lógicos.
Truthy, Falsy y Nullish
La condición dentro de un if se evalúa como true o false, pero JavaScript convierte automáticamente algunos valores en estos booleanos según su "verdad" o "falsedad" implícita mediante un proceso llamado coerción.
if (condicion) {
// Se ejecuta si la condicion es "truthy"
} else {
// Se ejecuta si la condicion es "falsy"
}🟢 Valores "truthy" (Cuentan como true)
Un valor es truthy si no se encuentra en la lista de valores falsy. Algunos ejemplos son:
true- Cualquier número diferente de
0(1,-5,3.14, etc.). - Cualquier string con contenido (
"hola","false","0", etc.). - Un array vacío
[]. - Un objeto vacío
{}. Infinityy-Infinity.- Cualquier función
function() {}.
🔴 Valores "falsy" (Cuentan como false)
Son valores que se evalúan como false en un contexto booleano:
false0(cero numérico).""(string vacío).nullundefinedNaN(Not a Number).
🟣 Valores "nullish"
El término nullish se refiere exclusivamente a:
nullundefined
Es importante destacar que todos los valores nullish son también falsy, pero no todos los valores falsy son nullish (por ejemplo, 0 o "" son falsy pero no nullish).
Forma más sencilla de recordarlos
El truco para distinguir cuándo un valor es truthy o falsy es simplemente memorizar la lista de los falsy, que son pocos. Si un valor no está en esa lista, puedes estar seguro de que es truthy. Es así de fácil.
¿1 es true y 0 es false?
Veamos la diferencia entre la comparación débil y la estricta:
console.log(true == 1); // true (coerción de tipos: JS convierte el booleano en número)
console.log(false == 0); // true (coerción de tipos)
console.log(true === 1); // false (comparación estricta: distinto tipo de dato)
console.log(false === 0); // false (comparación estricta)Como vimos, con === no hay coerción de tipos. Como true y false pertenecen al tipo Boolean, nunca serán idénticos a los valores del tipo Number.
Op. Ternario, Eval. por Cortocircuito y Asign. Lógica
Optimiza tu código JavaScript usando el operador ternario, evaluaciones por cortocircuito y asignaciones lógicas.
Flujos, Try Catch y Error
En JavaScript, los bloques son secciones de código delimitadas por llaves { } que crean su propio ámbito (scope). Dentro de un bloque, podemos declarar variables que solo existen en ese contexto.