Cuando escribimos código, por lo general, se lee de forma secuencial, es decir, una línea detrás de otra, desde arriba hacia abajo. Por lo tanto, una acción que realicemos en la línea 5 nunca ocurrirá antes que una que aparece en la línea 3. Ya veremos que más adelante esto se complica, pero en principio partimos de esa base, como explicamos en el flujo de ejecución de un programa.
Condicionales
Al hacer un programa necesitaremos establecer condiciones o decisiones, donde buscamos que se realice una acción A si se cumple una condición o una acción B si no se cumple. Este es el primer tipo de estructuras de control que encontraremos.
Tenemos varias estructuras de control condicionales:
Estructura de control | Descripción | Más info |
---|---|---|
If | Condición simple: Si ocurre algo, haz lo siguiente... | |
If/else | Condición con alternativa: Si ocurre algo, haz esto, sino, haz esto otro... | |
?: | Operador ternario: Equivalente a If/else , forma abreviada. | |
Switch | Estructura para casos específicos: Similar a varios If/else anidados. | Switch |
Condicional If
Quizás, el más conocido de estos mecanismos de estructura de control es el if
(condicional). Con él podemos indicar en el programa que se tome un camino sólo si se cumple la condición que establezcamos.
Observa el siguiente ejemplo, donde guardamos en el «compartimento» nota
, un valor numérico:
let nota = 7;
console.log("He realizado mi examen.");
// Condición (si la nota es mayor o igual a 5)
if (nota >= 5) {
console.log("¡Estoy aprobado!");
}
En este caso, como el valor de nota
es superior o igual a 5, nos aparecerá en la consola el mensaje «¡Estoy aprobado!». Sin embargo, si modificamos en la primera línea el valor de nota
a un valor inferior a 5, no nos aparecerá ese mensaje.
Cuando dentro de las llaves ({ }) sólo tenemos una línea, se pueden omitir dichas llaves. Aún así, es recomendable ponerlas siempre si tenemos dudas o no estamos seguros.
Condicional If / else
Se puede dar el caso que queramos establecer una alternativa a una condición. Para eso utilizamos el if
seguido de un else
. Con esto podemos establecer una acción A si se cumple la condición, y una acción B si no se cumple.
Vamos a modificar el ejemplo anterior para mostrar también un mensaje cuando estamos suspendidos, pero en este caso, en lugar de mostrar el mensaje directamente con un console.log
vamos a guardar ese texto en una nueva variable calificacion
:
let nota = 7;
console.log("He realizado mi examen. Mi resultado es el siguiente:");
if (nota < 5) {
// Acción A: nota es menor que 5
calificacion = "suspendido";
} else {
// Acción B: Cualquier otro caso diferente a A (nota es mayor o igual que 5)
calificacion = "aprobado";
}
console.log("Estoy", calificacion);
Nuevamente, en este ejemplo comprobaremos que podemos conseguir que se muestre el mensaje Estoy aprobado o Estoy suspendido dependiendo del valor que tenga la variable nota
. La diferencia con el ejemplo anterior es que creamos una nueva variable que contendrá un valor determinado dependiendo de la condición del If
.
Por último, el console.log
del final, muestra el contenido de la variable calificacion
, independientemente de que sea el primer caso o el segundo.
let nota = 7;
console.log("He realizado mi examen. Mi resultado es el siguiente:");
if (nota < 5) {
// Acción A (nota es menor que 5)
calificacion = "suspendido";
}
if (nota >= 5) {
// Acción B (nota es mayor o igual que 5)
calificacion = "aprobado";
}
console.log("Estoy", calificacion);
Este nuevo ejemplo, es equivalente al ejemplo anterior. Si nos fijamos bien, la única diferencia respecto al anterior es que estamos realizando dos if
independientes: uno para comprobar si está suspendido y otro para comprobar si está aprobado.
Pero aunque son equivalentes, no son exactamente iguales, ya que en el ejemplo que vimos anteriormente sólo existe un if, y por lo tanto, sólo se realiza la comprobación de una condición. En este ejemplo que vemos ahora, se realizan dos if, y por lo tanto, se evaluan dos condiciones independientes.
En este caso se trata de algo insignificante que no repercute demasiado, pero es importante darse cuenta de que el primer ejemplo estaría realizando menos tareas para conseguir un mismo resultado.
Condicional If múltiple
Es posible que necesitemos crear un condicional múltiple con más de 2 condiciones, por ejemplo, para establecer la calificación específica. Para ello, podemos anidar varios if/else
uno dentro de otro, de la siguiente forma:
let nota = 7;
console.log("He realizado mi examen.");
// Condición
if (nota < 5) {
calificacion = "Insuficiente";
} else if (nota < 6) {
calificación = "Suficiente";
} else if (nota < 8) {
calificacion = "Bien";
} else if (nota <= 9) {
calificacion = "Notable";
} else {
calificacion = "Sobresaliente";
}
console.log("He obtenido un", calificacion);
Sin embargo, anidar de esta forma varios if
suele ser muy poco legible y produce un código repetitivo algo feo. En algunos casos se podría utilizar otra estructura de control llamada switch
, que veremos a continuación.