Condicionales

Un programa que siempre hace lo mismo no es muy útil. Quieres una página que muestre un mensaje a un visitante que ha iniciado sesión y otro a un extraño, un formulario que acepte una edad de 18 pero no de 12, un juego que reporte si ganaste o perdiste. Todo eso necesita una forma de hacer una pregunta y actuar según la respuesta. Eso es lo que hacen los condicionales: permiten que tu código elija qué ejecutar según si algo es verdadero o no.
Ya tienes las piezas. Los operadores de comparación y lógicos producen respuestas verdaderas o falsas, y este capítulo trata sobre actuar basándose en ellas.
Ejecutar código solo cuando una condición es verdadera
Una sentencia if ejecuta un bloque de código solo cuando una condición es verdadera. Escribes la palabra if, una condición entre paréntesis y un bloque entre llaves. Si la condición es verdadera, el bloque se ejecuta. Si no es así, JavaScript omite el bloque y continúa.
const age = 20;
if (age >= 18) {
console.log("Puedes entrar."); // Puedes entrar.
}La condición age >= 18 es verdadera o falsa. Aquí age es 20, así que es verdadera y el mensaje se imprime. Cambia age a 12 y la condición es falsa, así que el bloque se omite y no se imprime nada.
A menudo quieres una alternativa para cuando la condición es falsa. Para eso está else:
const age = 12;
if (age >= 18) {
console.log("Puedes entrar.");
} else {
console.log("Vuelve cuando seas mayor."); // Vuelve cuando seas mayor.
}Exactamente uno de los dos bloques se ejecuta, nunca ambos. Cuando tienes más de dos resultados, else if te permite verificar otra condición:
const score = 74;
if (score >= 90) {
console.log("Calificación: A");
} else if (score >= 70) {
console.log("Calificación: B"); // Calificación: B
} else {
console.log("Calificación: C");
}JavaScript verifica cada condición de arriba hacia abajo y se detiene en la primera que es verdadera. Una puntuación de 74 no es >= 90, pero sí es >= 70, así que imprime Calificación: B y nunca mira el else.
if ejecuta su bloque solo cuando la condición entre paréntesis es verdadera, y else te da una alternativa para cuando no lo es. Agrega else if cuando hay más de dos resultados. JavaScript verifica de arriba hacia abajo y se detiene en la primera coincidencia, así que ordena tus condiciones de una manera que tenga sentido. Elegir un valor con el operador ternario
A veces un if / else hace un trabajo pequeño: elegir entre dos valores. Para eso existe una forma más corta llamada operador ternario. Escribes una condición, un ?, el valor a usar cuando es verdadera, un : y el valor a usar cuando es falsa.
const age = 20;
const message = age >= 18 ? "Bienvenido" : "Muy joven";
console.log(message); // BienvenidoLéelo como una pregunta: ¿es age >= 18? Si sí, message se convierte en "Bienvenido"; si no, se convierte en "Muy joven". Esa es la misma decisión que un if / else haría, en una línea.
El ternario es mejor cuando estás eligiendo un valor para guardar o imprimir. Cuando una rama necesita hacer varias cosas, una sentencia if es más clara, así que usa el ternario solo cuando cada lado es un valor único.
condition ? valueIfTrue : valueIfFalse. Brilla cuando estás eligiendo algo para guardar o imprimir. Si una rama necesita hacer más que devolver un valor único, usa un if completo en su lugar, será más legible. Comparar un valor contra casos fijos con switch
Cuando estás verificando un valor contra una lista de posibilidades fijas, una sentencia switch puede ser más ordenada que una larga cadena if / else if. Le das el valor a verificar, luego listas los casos contra los que compararlo.
const day = "Mar";
switch (day) {
case "Sab":
console.log("Fin de semana");
break;
case "Dom":
console.log("Fin de semana");
break;
default:
console.log("Día de semana"); // Día de semana
}El switch compara day con cada case a su vez. Cuando encuentra una coincidencia, ejecuta el código de ese case. break le dice que se detenga; sin él, JavaScript sigue ejecutando en el siguiente case. default es la alternativa que se ejecuta cuando ningún case coincide, como el else final en una cadena.
Olvidar break es el error clásico de switch. Omítelo y tu código ejecutará el case coincidente y luego cada case debajo de él hasta que golpee un break o el final, lo cual casi nunca es lo que quisiste.
switch verifica un valor contra una lista de opciones case y ejecuta la que coincide, con default como la alternativa general. Siempre termina cada case con break, o JavaScript sigue ejecutando en los cases debajo. Ese break faltante es el error que casi todos cometen al menos una vez. Elegir la herramienta correcta
Ahora tienes tres formas de tomar una decisión, y la elección es principalmente sobre ajuste. Usa una cadena if / else if / else para la mayoría de ramificaciones, especialmente cuando las condiciones son rangos o combinaciones. Usa un ternario cuando estés eligiendo uno de dos valores para guardar o imprimir. Usa un switch cuando estés verificando un valor contra un puñado de opciones fijas.
Ninguno de estos es más avanzado que los otros. Usa el que expresa tu decisión más claramente, y si no estás seguro, una sentencia if es siempre una opción segura.
if para la mayoría de decisiones, un ternario cuando estés eligiendo uno de dos valores, y un switch cuando estés emparejando un valor contra opciones fijas. Ninguno de ellos es más sofisticado que los otros. Elige cualquiera que exprese tu decisión más claramente, y usa por defecto if cuando no estés seguro. A dónde van los condicionales desde aquí
Los condicionales son cómo un programa deja de ser un script fijo y comienza a responder a su entrada. Los usarás constantemente, y se combinan con todo alrededor: las respuestas verdadero-o-falso vienen de operators, y las decisiones que tomas aquí comienzan a valer la pena una vez que puedas ejecutarlas repetidamente sobre datos con loops y empaquetarlas en functions.
El próximo capítulo, loops, agrega la otra mitad del flujo de control: no solo elegir si ejecutar código, sino ejecutarlo una y otra vez hasta que una condición te dice que te detengas.

