Lección 17: Operador Ternario
🧠 Concepto
Section titled “🧠 Concepto”El operador ternario (o condicional ternario) es una forma concisa de escribir un if...else en una sola línea. Se llama “ternario” porque tiene tres operandos.
Sintaxis
Section titled “Sintaxis”condicion ? valorSiTrue : valorSiFalse;condicion: expresión que se evalúa como booleano.valorSiTrue: valor devuelto si la condición estrue.valorSiFalse: valor devuelto si la condición esfalse.
Comparación con if/else
Section titled “Comparación con if/else”// Con if/elselet mensaje;if (edad >= 18) { mensaje = 'Mayor de edad';} else { mensaje = 'Menor de edad';}
// Con ternario (mucho más conciso)let mensaje = edad >= 18 ? 'Mayor de edad' : 'Menor de edad';Cuándo usarlo
Section titled “Cuándo usarlo”✅ Úsalo para: asignaciones simples, retornos de función, condiciones inline.
❌ NO lo uses para: lógica compleja, múltiples condiciones anidadas, acciones que no devuelven un valor.
Ternario anidado (⚠️ con cuidado)
Section titled “Ternario anidado (⚠️ con cuidado)”Se puede anidar ternarios, pero afecta la legibilidad:
let nota = 85;let calificacion = nota >= 90 ? 'Excelente' : nota >= 70 ? 'Bueno' : nota >= 50 ? 'Suficiente' : 'Insuficiente';A veces es aceptable, pero si hay más de 3 niveles, mejor usa if/else o switch.
Return ternario
Section titled “Return ternario”Es muy común en funciones:
function esMayorEdad(edad) { return edad >= 18 ? 'Sí' : 'No';}💻 Ejemplo
Section titled “💻 Ejemplo”// Asignación condicionallet edad = 20;let puedeVotar = edad >= 18 ? 'Sí, puede votar' : 'No puede votar';console.log(puedeVotar); // "Sí, puede votar"
// Ternario con template literallet hora = 10;let saludo = `¡${hora < 12 ? 'Buenos días' : 'Buenas tardes'}!`;console.log(saludo); // "¡Buenos días!"
// Múltiples ternarios (con moderación)let temperatura = 25;let clima = temperatura > 30 ? 'Caluroso' : temperatura > 20 ? 'Templado' : temperatura > 10 ? 'Frío' : 'Muy frío';console.log(clima); // "Templado"
// Ternario para mostrar/ocultar (sin else)let estaLogueado = true;console.log(estaLogueado ? 'Usuario autenticado' : '');📝 Ejercicio
Section titled “📝 Ejercicio”- Crea un archivo
operador-ternario.js. - Declara una variable
numerocon cualquier valor. - Usa el ternario para determinar si es positivo, negativo o cero.
- Declara
nombreUsuario(puede sernullo un string). - Usa ternario para mostrar “Bienvenido, [nombre]” o “Bienvenido, Invitado”.
- Escribe una función
parImpar(n)que devuelva “par” o “impar” usando ternario.
let numero = 7;
let tipo = numero > 0 ? 'Positivo' : numero < 0 ? 'Negativo' : 'Cero';console.log(`${numero} es ${tipo}`);
let nombreUsuario = 'Carlos';let saludo = nombreUsuario ? `Bienvenido, ${nombreUsuario}` : 'Bienvenido, Invitado';console.log(saludo);
function parImpar(n) { return n % 2 === 0 ? 'par' : 'impar';}
console.log(`El número ${numero} es ${parImpar(numero)}`);⚠️ Nota
Section titled “⚠️ Nota”No uses el ternario para ejecutar acciones que no devuelven un valor:
// ❌ Mal uso (el ternario no es para acciones secundarias)edad >= 18 ? console.log('Adulto') : console.log('Menor');
// ✅ Mejor usa ifif (edad >= 18) { console.log('Adulto');} else { console.log('Menor');}El ternario debe usarse principalmente para valores y expresiones, no para efectos secundarios.
El ternario es excelente para renderizado condicional en interfaces. En React, por ejemplo:
return ( <div> {usuario ? <Saludo nombre={usuario} /> : <Login />} </div>);Pero eso lo veremos más adelante. Por ahora, úsalo para simplificar asignaciones condicionales.