Todo programa necesita reaccionar. Un usuario hace clic en un botón. Una API devuelve datos. Un campo de un formulario se queda en blanco. Sin una forma de ramificar, tu código se ejecutaría línea por línea sin importar lo que esté sucediendo realmente. Los condicionales le dan a JavaScript esa capacidad de elegir. Son los que toman las decisiones dentro de tus funciones, los guardianes que deciden qué se ejecuta y qué se salta. Una vez que entiendas cómo escribirlos bien, dejarás de escribir scripts rígidos y empezarás a construir software que realmente responda.

Por qué son importantes los condicionales

El flujo de control es la columna vertebral de la lógica. Utilizas condicionales para validar contraseñas antes de enviarlas a un servidor. Compruebas si un carrito de compras está vacío antes de calcular los impuestos. Detectas si una solicitud de red falló para poder mostrar un error en lugar de una pantalla en blanco. Todos estos escenarios se basan en la misma idea sencilla: evaluar algo y luego actuar en consecuencia.

Sin condicionales, tu aplicación sería un monólogo en lugar de una conversación. No podría manejar diferentes escenarios de datos, gestionar errores de forma elegante o reaccionar a las acciones del usuario de ninguna manera significativa. Te permiten controlar cómo se ejecuta tu programa ante la incertidumbre del mundo real.

La sentencia if básica

El lugar más sencillo para empezar es el if independiente. Dice: si esto es cierto, haz este trabajo. Eso es todo. Sin alternativas, sin rutas de escape.

if (x % 2 === 0) {
    console.log("Even");
}

En este fragmento, el operador de módulo comprueba si x es divisible exactamente por dos. Cuando el resto es cero, la consola registra la cadena de texto. Si x es impar, no sucede nada. El bloque se ignora y la ejecución continúa debajo.

Esa omisión silenciosa es importante. A veces solo quieres proteger una única acción. Quizás quieras añadir una clase CSS a un botón solo cuando esté activo, o añadir un elemento a un array solo cuando la entrada no esté vacía. Una sentencia if simple gestiona esos momentos sin obligarte a escribir lógica que no necesitas.

Añadir una alternativa con if-else

Las decisiones reales suelen tener dos caras. O el usuario es lo suficientemente mayor, o no lo es. O el pago tuvo éxito, o falló. La estructura if-else cubre ambos casos.

if (age >= 18) {
    console.log("Adult");
} else {
    console.log("Not an Adult");
}

El bloque else captura todo lo que la primera condición rechazó. Crea una rama binaria limpia. Este patrón funciona bien para interruptores (toggles), permisos y feature flags. Mantén la lógica dentro de cada bloque enfocada. Si te encuentras acumulando demasiadas tareas en una sola rama, suele ser una señal de que debes dividir el trabajo en funciones más pequeñas.

Comprobar múltiples rutas con else if

La vida rara vez ofrece solo dos opciones. Es posible que necesites categorizar un número como positivo, negativo o cero. Es posible que asignes una tarifa de envío basada en rangos de peso. Para comparaciones múltiples y ordenadas, utiliza else if.

if (x > 0) {
    console.log("Positive");
} else if (x < 0) {
    console.log("Negative");
} else {
    console.log("Zero");
}

JavaScript evalúa estos de arriba hacia abajo. Tan pronto como una condición se cumple, ejecuta ese bloque e ignora el resto. El orden importa. Si comprobaras x > 0 después de comprobar x > 100, la comprobación más estricta nunca se ejecutaría porque la más laxa la capturaría primero. Piensa en el else if como una lista de prioridades.

La sentencia switch

Cuando comparas un valor con muchas opciones discretas, una larga cadena de sentencias else if puede resultar repetitiva. Una sentencia switch limpia eso. Compara una expresión con cláusulas case y ejecuta el bloque correspondiente.

switch (true) {
    case marks >= 90:
        Branch = "Computer science";
        break;
    case marks >= 80:
        Branch = "Mechanical";
        break;
    default:
        Branch = "Other";
}

Este ejemplo utiliza switch(true) para evaluar condiciones booleanas directamente, lo cual es un patrón común en JavaScript cuando tu lógica depende de rangos en lugar de una igualdad exacta. La palabra clave break es esencial. Sin ella, la ejecución continúa hacia el siguiente caso independientemente de si coincide o no, lo cual rara vez es lo que deseas aquí. La cláusula default actúa como un else final, capturando cualquier cosa que no encajara en los casos anteriores.

El switch destaca cuando tienes opciones claras y fijas. Suele ser más fácil de leer que una pila alta de bloques else if, especialmente cuando cada rama simplemente asigna un valor o llama a una única función.

El operador ternario

Para decisiones binarias cortas, el operador ternario mantiene las cosas compactas. Toma tres operandos: una condición, un valor si es verdadero y un valor si es falso.

const result = (age >= 18) ? "Eligible" : "Not eligible";

Puedes usarlo para asignaciones rápidas o retornos en línea. Funciona bien cuando el resultado es una expresión simple. Resiste la tentación de anidar ternarios a tres niveles de profundidad. Un ternario anidado puede ahorrar líneas, pero cuesta legibilidad. Cuando tu lógica crece, un bloque if-else suele ser más amable con el siguiente desarrollador que abra el archivo.

Decisiones anidadas

La lógica compleja a veces requiere hacer preguntas de seguimiento. Puedes anidar un if dentro de otro if para refinar una decisión.

if (weather === "sunny") {
    if (temp > 30) {
        console.log("