Skip to content

Lección 14: Booleanos y Valores Truthy/Falsy

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.

Solo existen 6 valores falsy en JavaScript. Todo lo demás es truthy.

ValorDescripción
falseEl booleano false
0El número cero
'' o ""String vacío
nullAusencia intencional de valor
undefinedVariable sin asignar
NaNNot a Number
// TODOS estos dan false al convertirlos a booleano
console.log(Boolean(false)); // false
console.log(Boolean(0)); // false
console.log(Boolean('')); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN)); // false

Cualquier valor que no sea falsy es truthy. Esto incluye:

console.log(Boolean(true)); // true
console.log(Boolean(1)); // true (cualquier número ≠ 0)
console.log(Boolean(-1)); // true
console.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)); // true

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) { ... }

El doble signo de negación !! es una forma rápida de convertir cualquier valor a booleano:

console.log(!!'Hola'); // true
console.log(!!''); // false
console.log(!!100); // true
console.log(!!0); // false
console.log(!!null); // false
console.log(!!undefined); // false
console.log(!!NaN); // false
// Verificar si un usuario ingresó su nombre
function 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 truthy
console.log(Boolean('false')); // true (string 'false' NO es falsy)
console.log(Boolean('0')); // true (string '0' NO es falsy)
console.log(Boolean([])); // true
console.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)
  1. Crea un archivo truthy-falsy.js.
  2. Crea un array con estos valores: 0, '', null, undefined, NaN, false, 'Hola', 1, [], {}.
  3. Usa un for para imprimir cada valor y su equivalente booleano con !!.
  4. 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);

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