CodeForge

JavaScript de Cero a Experto / Operadores y control

Truthy y falsy: qué vale como verdadero

Teoría18 min20 XP

Cuando JavaScript necesita un sí/no pero le das algo que no es un boolean —un texto, un número, null—, lo convierte a true o false según reglas fijas. Entender esas reglas de "truthy" (vale como verdadero) y "falsy" (vale como falso) es lo que te deja escribir condiciones limpias como if (nombre) en vez de comparaciones largas. Y evita un par de sorpresas famosas.

Vacío o con algo

La lista corta de falsy

Solo hay un puñado de valores falsy. Apréndetelos, porque TODO lo demás es truthy:

La lista falsy completa (para principiantes): false, 0, "", null, undefined, NaN. Seis valores. Cualquier otra cosa es truthy. Boolean(x) te dice cómo se convierte cualquier valor — úsalo para salir de dudas.

Las trampas: lo que parece falso pero es TRUE

Las cuatro trampas que sorprenden a todos: "0" y "false" son STRINGS con caracteres (truthy — el texto no está vacío); un espacio " " es contenido; y una lista vacía [] o un objeto vacío {} son truthy (existen, aunque no tengan elementos — para saber si una lista está vacía se usa lista.length === 0, que verás en el módulo 4).

El uso idiomático

Aprovechar truthy/falsy hace las condiciones cortas y legibles:

idiomatico.js
// en vez de: if (nombre !== "" && nombre !== null && nombre !== undefined)
if (nombre) {
// se ejecuta si 'nombre' tiene contenido (no vacío, no null, no undefined)
}

// en vez de: if (cantidad !== 0)  ... a veces:
if (cantidad) {
// OJO: esto es false también si cantidad es 0. ¿Querías eso? Sé consciente.
}

if (nombre) se lee "si hay nombre" y cubre vacío, null y undefined de una. Pero con NÚMEROS ten cuidado: if (cantidad) también es falso cuando cantidad es 0 — si el 0 es un valor válido, compara explícito (if (cantidad > 0) o !== undefined). Aprovecha truthy/falsy, pero con los ojos abiertos.

Tienes const texto = '0' (el carácter cero, entre comillas). Escribes if (texto) { ... }. ¿Se ejecuta el bloque?

Mini-reto

Prueba con Boolean() cada uno de estos y predice ANTES de ejecutar: Boolean("Ana"), Boolean(0), Boolean("0"), Boolean(-3), Boolean(""), Boolean(" "), Boolean(null). Anota tu predicción, ejecuta y compara. Cada acierto/fallo te fija la regla. En "Mi Bolsillo", usa if (nombreUsuario) para decidir si saludar con nombre o con "Invitado".

Qué sigue

Ya sabes qué vale como verdadero. Es hora de que tu programa DECIDA de verdad: la próxima lección construye los CONDICIONALES if / else if / else —hacer que el código tome caminos distintos según las condiciones—. El momento en que tu programa deja de ir en línea recta y empieza a ramificar.