Operador ternario
Introducción
El operador ternario es una forma concisa de escribir expresiones condicionales en JavaScript. Se trata del único operador en JavaScript que toma tres operandos, de ahí su nombre "ternario". Este operador nos permite evaluar una condición y devolver un valor u otro dependiendo del resultado de dicha evaluación, todo en una sola línea de código. Es especialmente útil cuando necesitamos asignar valores a variables o devolver valores desde funciones basados en condiciones simples.
Sintaxis del operador ternario
La sintaxis básica del operador ternario es la siguiente:
condicion ? expresion1 : expresion2
Su funcionamiento es sencillo:
- Primero se evalúa la
condicion
- Si la condición es verdadera (truthy), se ejecuta y devuelve el valor de
expresion1
- Si la condición es falsa (falsy), se ejecuta y devuelve el valor de
expresion2
Veamos un ejemplo básico:
const edad = 20;
const mensaje = edad >= 18 ? "Eres mayor de edad" : "Eres menor de edad";
console.log(mensaje); // Muestra: "Eres mayor de edad"
En este ejemplo:
- Evaluamos si
edad
es mayor o igual a 18 - Como la condición es verdadera, el operador ternario devuelve "Eres mayor de edad"
- Este valor se asigna a la variable
mensaje
Comparación con if/else tradicional
Para entender mejor el operador ternario, podemos compararlo con su equivalente usando la estructura if/else
:
// Usando if/else
let mensaje;
if (edad >= 18) {
mensaje = "Eres mayor de edad";
} else {
mensaje = "Eres menor de edad";
}
// Usando operador ternario
const mensaje = edad >= 18 ? "Eres mayor de edad" : "Eres menor de edad";
Como podemos observar, el operador ternario nos permite reducir varias líneas de código a una sola expresión más compacta. Esta concisión es una de sus principales ventajas.
Casos de uso apropiados
El operador ternario es especialmente útil en las siguientes situaciones:
1. Asignación condicional de valores
const temperaturaCelsius = 22;
const sensacionTermica = temperaturaCelsius <= 15 ? "Hace frío" : "Hace calor";
2. Operadores ternarios en retorno de funciones
function saludar(hora) {
return hora < 12 ? "Buenos días" : "Buenas tardes";
}
console.log(saludar(10)); // Muestra: "Buenos días"
console.log(saludar(15)); // Muestra: "Buenas tardes"
3. Como parte de plantillas literales
const puntuacion = 85;
console.log(`Has ${puntuacion >= 60 ? "aprobado" : "suspendido"} el examen.`);
// Muestra: "Has aprobado el examen."
4. Para establecer valores predeterminados
function configurarOpciones(opciones) {
const configuracion = {
color: opciones.color ? opciones.color : "negro",
tamano: opciones.tamano ? opciones.tamano : "mediano",
visible: opciones.visible !== undefined ? opciones.visible : true
};
return configuracion;
}
Anidación de operadores ternarios
Es posible anidar operadores ternarios para manejar múltiples condiciones, aunque esto puede afectar la legibilidad del código:
const puntuacion = 85;
const resultado = puntuacion >= 90 ? "Sobresaliente"
: puntuacion >= 70 ? "Notable"
: puntuacion >= 60 ? "Bien"
: puntuacion >= 50 ? "Suficiente"
: "Insuficiente";
console.log(resultado); // Muestra: "Notable"
En este ejemplo estamos evaluando múltiples rangos de puntuación y asignando un resultado según el rango en el que se encuentre la puntuación.
La estructura se evalúa de la siguiente manera:
- ¿Es
puntuacion
mayor o igual a 90? Si es así, devuelve "Sobresaliente", si no, continúa. - ¿Es
puntuacion
mayor o igual a 70? Si es así, devuelve "Notable", si no, continúa. - Y así sucesivamente hasta la última condición.
Buenas prácticas y limitaciones
Aunque el operador ternario puede hacer nuestro código más conciso, es importante usarlo adecuadamente:
Buenas prácticas:
-
Usar para expresiones simples: El operador ternario funciona mejor con condiciones simples y opciones de retorno sencillas.
-
Mantener la legibilidad: Si la expresión se vuelve demasiado compleja, considera usar un
if/else
tradicional. -
Formatear correctamente: Al anidar operadores ternarios, usa una buena indentación y formato para mantener el código legible.
// Buena práctica
const mensaje = edad >= 18
? "Eres mayor de edad"
: "Eres menor de edad";
- Evitar efectos secundarios: El operador ternario debería usarse principalmente para determinar valores, no para ejecutar operaciones con efectos secundarios.
Limitaciones:
-
Complejidad: No es adecuado para lógica condicional compleja con múltiples operaciones.
-
Legibilidad en anidación: Los operadores ternarios anidados pueden reducir significativamente la legibilidad del código.
-
Depuración: El código más compacto puede ser más difícil de depurar.
// Difícil de leer y depurar
const resultado = a > b ? x > y ? "A" : "B" : z > y ? "C" : "D";
// Mejor alternativa con if/else
let resultado;
if (a > b) {
if (x > y) {
resultado = "A";
} else {
resultado = "B";
}
} else {
if (z > y) {
resultado = "C";
} else {
resultado = "D";
}
}
Ejemplos prácticos
Ejemplo 1: Determinar si un número es par o impar
function determinarParidad(numero) {
return numero % 2 === 0 ? "Par" : "Impar";
}
console.log(determinarParidad(4)); // Muestra: "Par"
console.log(determinarParidad(7)); // Muestra: "Impar"
Ejemplo 2: Pluralizar palabras
function pluralizar(cantidad, singular, plural) {
return cantidad === 1 ? singular : plural;
}
const manzanas = 5;
console.log(`Tengo ${manzanas} ${pluralizar(manzanas, "manzana", "manzanas")}`);
// Muestra: "Tengo 5 manzanas"
const libro = 1;
console.log(`Tengo ${libro} ${pluralizar(libro, "libro", "libros")}`);
// Muestra: "Tengo 1 libro"
Ejemplo 3: Mostrar mensajes según el estado de un usuario
const usuario = {
nombre: "Laura",
activo: true,
admin: false
};
const mensajeEstado = usuario.activo
? usuario.admin
? `${usuario.nombre} es administrador activo`
: `${usuario.nombre} es usuario activo`
: `${usuario.nombre} no está activo`;
console.log(mensajeEstado); // Muestra: "Laura es usuario activo"
Resumen
El operador ternario es una herramienta poderosa en JavaScript que nos permite escribir expresiones condicionales de forma concisa. Su sintaxis condicion ? valor_si_verdadero : valor_si_falso
nos permite evaluar una condición y devolver diferentes valores en una sola línea de código. Es ideal para asignaciones condicionales simples y retornos de funciones.
Aunque puede hacer nuestro código más compacto, debemos utilizarlo con prudencia, evitando anidaciones excesivas y priorizando siempre la legibilidad. En situaciones donde la lógica condicional es compleja, una estructura if/else
tradicional suele ser más apropiada y mantenible.
Dominar el operador ternario es un paso importante en tu camino para escribir código JavaScript más elegante y eficiente, siempre que lo utilices en los contextos adecuados.