Todo programa útil acaba llegando a un punto de decisión. ¿Debería este botón enviar el formulario o mostrar un error? ¿Ve este usuario el panel de administración o la vista de invitado? JavaScript responde a estas preguntas con sentencias condicionales. Son las válvulas de control de tu código: abren un camino y cierran otro, todo basado en si una expresión se evalúa como verdadera o falsa. Sin ellas, tu script avanzaría de arriba abajo sin reaccionar nunca a la persona que lo utiliza.
La rama más simple: if
La sentencia if es la puerta por la que pasas primero. Colocas una condición dentro de paréntesis. Si esa condición se resuelve como true, se ejecuta el bloque de código que está debajo. Si se resuelve como false, JavaScript omite el bloque por completo y continúa con el archivo.
Esto es exactamente lo que necesitas para comprobaciones simples y puntuales. Imagina validar un campo de un formulario antes de enviar cualquier cosa a un servidor:
const email = document.getElementById("email").value;
if (email === "") {
alert("Please enter your email.");
}
Sin email, no hay envío. La lógica es directa y clara. Usa if cuando solo haya un caso especial que proteger y no se requiera ninguna acción alternativa.
Manejar un "o lo uno o lo otro": if...else
La mayoría de las decisiones reales tienen dos caras. El par if...else cubre exactamente eso. Un bloque se ejecuta cuando la condición es verdadera y el otro cuando es falsa. Los dos caminos son mutuamente excluyentes.
Imagina una comprobación del modo oscuro al cargar la página:
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
if (prefersDark) {
document.body.classList.add("dark");
} else {
document.body.classList.add("light");
}
El navegador nunca añadirá ambas clases. Elige un camino, lo ejecuta y continúa. Siempre que tu lógica se divida claramente en dos resultados posibles, esta es la estructura que debes utilizar.
Múltiples caminos: if...else if...else
No todos los problemas son binarios. A veces necesitas una escalera de posibilidades. La cadena if...else if...else te permite probar varias condiciones en secuencia. JavaScript las evalúa de arriba abajo y ejecuta el primer bloque cuya condición sea verdadera. Tras esa coincidencia, el resto de la escalera se ignora.
Un ejemplo clásico es asignar una calificación de letra a una puntuación numérica:
const score = 87;
let grade;
if (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else if (score >= 70) {
grade = "C";
} else {
grade = "F";
}
El orden importa enormemente aquí. Si comprobaras score >= 70 antes que score >= 90, casi todas las notas de aprobado quedarían atrapadas en el grupo de la C porque la primera coincidencia verdadera es la que gana. Mantén tus condiciones ordenadas de la más específica a la menos específica, y cierra siempre la cadena con un else final para capturar cualquier cosa que se haya escapado.
Coincidencia de valores fijos: switch
Cuando comparas una variable con una lista de constantes conocidas, una larga cadena de if...else se vuelve ruidosa. La sentencia switch lo simplifica todo. Evalúa una expresión una sola vez y luego la compara con etiquetas case utilizando igualdad estricta (===). Esto hace que el código sea más fácil de leer cuando las opciones son discretas y con nombre.
Considera establecer el horario de una tienda basándote en el día actual:
const day = new Date().getDay();
switch (day) {
case 0:
console.log("Sunday hours: 10am - 4pm");
break;
case 6:
console.log("Saturday hours: 9am - 6pm");
break;
default:
console.log("Weekday hours: 8am - 8pm");
}
Ten cuidado con break. Si lo omites, la ejecución pasa al siguiente case y continúa ejecutándose. Ese comportamiento es útil ocasionalmente, pero con más frecuencia causa errores silenciosos. Usado correctamente, switch hace que tu intención sea obvia de un vistazo y mantiene las ramas relacionadas alineadas en una columna ordenada.
Decisiones compactas: el operador ternario
El operador ternario —escrito como ? :— es una expresión, no una sentencia. Esa distinción es importante
