DevPath · Aprende a programar ESPTEN

Condicionales

Truthy/falsy y el operador ternario

Valores truthy y falsy

Aquí viene un truco que usarás a diario. La condición de un if no tiene por qué ser una comparación: JavaScript es capaz de mirar cualquier valor y decidir si "cuenta como verdadero". Hay una lista cortita de valores falsy (se comportan como false) y todo lo demás es truthy. Solo tienes que memorizar la lista corta; el resto cae por descarte.

Valores falsy (son solo estos seis, te los sabes de memoria en un minuto):

false
0
""        // string vacío
null
undefined
NaN       // "Not a Number": resultado de una operación numérica inválida

NaN (Not a Number) aparece cuando una operación numérica no tiene un resultado válido, por ejemplo Number("hola") o 0 / 0. Es de tipo number, pero representa "no es un número válido", y es falsy.

Ejemplos:

if ("hola") console.log("los strings con texto son truthy");
if (0) console.log("esto NO se ejecuta");
if ([]) console.log("¡un array vacío es truthy!");

Ese array vacío truthy pilla a todo el mundo la primera vez, ojo. Esta idea es oro puro para comprobar de un vistazo si una variable "tiene algo dentro":

const nombre = "";
if (nombre) {
  console.log("Hola " + nombre);
} else {
  console.log("Falta el nombre"); // se ejecuta: "" es falsy
}

El operador ternario

Es el if/else de bolsillo: un if/else que cabe en una línea y que devuelve un valor. Cuando solo quieres elegir entre dos opciones para una variable, te ahorra cuatro líneas. Su sintaxis es:

condición ? valorSiVerdadero : valorSiFalso
const edad = 20;
const mensaje = edad >= 18 ? "Adulto" : "Menor";
console.log(mensaje); // "Adulto"

Es ideal para asignaciones simples. Pero no te emociones encadenando ternarios dentro de ternarios: si tienes que entornar los ojos para leerlo, vuelve al if/else de toda la vida. La legibilidad gana siempre.

Ejemplos

¿Rellenó el usuario su nombre? (truthy)

const usuario = "";
if (usuario) {
  console.log("Bienvenido, " + usuario);
} else {
  console.log("Usuario anónimo");
}

Nivel del jugador según sus puntos (ternario)

const puntos = 80;
const nivel = puntos >= 50 ? "avanzado" : "principiante";
console.log("Nivel:", nivel);
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← if, else if y elseLa estructura switch →