Lección 14: Booleanos y Valores Truthy/Falsy
🧠 Concepto
Section titled “🧠 Concepto”En JavaScript, cualquier valor puede ser evaluado como booleano en un contexto condicional. Esto significa que todos los valores son inherentemente truthy (verdaderos) o falsy (falsos). Entender esto es clave para escribir código más conciso y evitar errores sutiles.
Valores falsy
Section titled “Valores falsy”Solo existen 6 valores falsy en JavaScript. Todo lo demás es truthy.
| Valor | Descripción |
|---|---|
false | El booleano false |
0 | El número cero |
'' o "" | String vacío |
null | Ausencia intencional de valor |
undefined | Variable sin asignar |
NaN | Not a Number |
// TODOS estos dan false al convertirlos a booleanoconsole.log(Boolean(false)); // falseconsole.log(Boolean(0)); // falseconsole.log(Boolean('')); // falseconsole.log(Boolean(null)); // falseconsole.log(Boolean(undefined)); // falseconsole.log(Boolean(NaN)); // falseValores truthy
Section titled “Valores truthy”Cualquier valor que no sea falsy es truthy. Esto incluye:
console.log(Boolean(true)); // trueconsole.log(Boolean(1)); // true (cualquier número ≠ 0)console.log(Boolean(-1)); // trueconsole.log(Boolean('texto')); // true (string no vacío)console.log(Boolean(' ')); // true (espacio es carácter)console.log(Boolean([])); // true (array vacío)console.log(Boolean({})); // true (objeto vacío)console.log(Boolean(Infinity)); // trueCómo JavaScript evalúa condiciones
Section titled “Cómo JavaScript evalúa condiciones”Cuando usas un valor en un if, JavaScript lo convierte automáticamente a booleano:
let nombre = '';
if (nombre) { console.log('El nombre está definido');} else { console.log('El nombre está vacío'); // ← esto se ejecuta}
// Es equivalente a:if (Boolean(nombre) === true) { ... }Conversión a booleano con !!
Section titled “Conversión a booleano con !!”El doble signo de negación !! es una forma rápida de convertir cualquier valor a booleano:
console.log(!!'Hola'); // trueconsole.log(!!''); // falseconsole.log(!!100); // trueconsole.log(!!0); // falseconsole.log(!!null); // falseconsole.log(!!undefined); // falseconsole.log(!!NaN); // false💻 Ejemplo
Section titled “💻 Ejemplo”// Verificar si un usuario ingresó su nombrefunction saludar(nombre) { if (nombre) { console.log(`Hola, ${nombre}!`); } else { console.log('Hola, Invitado!'); }}
saludar('Ana'); // "Hola, Ana!"saludar(''); // "Hola, Invitado!"saludar(null); // "Hola, Invitado!"saludar(undefined); // "Hola, Invitado!"
// Valores que parecen falsos pero son truthyconsole.log(Boolean('false')); // true (string 'false' NO es falsy)console.log(Boolean('0')); // true (string '0' NO es falsy)console.log(Boolean([])); // trueconsole.log(Boolean({})); // true
// Uso práctico con ||let config = { tema: '', idioma: 'es'};let tema = config.tema || 'oscuro';console.log('Tema seleccionado:', tema); // "oscuro" (porque '' es falsy)📝 Ejercicio
Section titled “📝 Ejercicio”- Crea un archivo
truthy-falsy.js. - Crea un array con estos valores:
0,'',null,undefined,NaN,false,'Hola',1,[],{}. - Usa un
forpara imprimir cada valor y su equivalente booleano con!!. - Escribe una función
escribirMensaje(mensaje)que solo muestre el mensaje si no está vacío.
let valores = [0, '', null, undefined, NaN, false, 'Hola', 1, [], {}];
for (let val of valores) { console.log(`!!${val} = ${!!val}`);}
function escribirMensaje(mensaje) { if (mensaje) { console.log('Mensaje:', mensaje); } else { console.log('No hay mensaje que mostrar'); }}
escribirMensaje('Hola mundo');escribirMensaje('');escribirMensaje(null);⚠️ Nota
Section titled “⚠️ Nota”Ten cuidado con el 0 y el string vacío ''. A veces necesitas distinguir entre “el usuario escribió 0” y “el usuario no escribió nada”. En esos casos, usa una comparación explícita:
let cantidad = 0;if (cantidad !== '') { // en lugar de if (cantidad) console.log('Hay cantidad:', cantidad);}El uso de valores truthy/falsy hace tu código más idiomático. En lugar de:
if (nombre !== null && nombre !== undefined && nombre !== '') {Puedes escribir simplemente:
if (nombre) {