Ramificaciones

Categories:

Habrá ocasiones en que necesitemos ejecutar ciertas líneas código con base en el cumplimiento de al menos una condición.
Para eso se utilizan las ramificaciones, también se les llama condicionales porque dependen del cumplimiento de al menos una condición.

if
Si se cumple la condición – o las condiciones – que se encuentran entre paréntesis se ejecutan las líneas de código que están entre las llaves.
Después de ejecutar el código que está entre las llaves, continúa ejecutándose el código que sigue después.
Si no se cumple la condición, el programa sigue su flujo después del bloque de código, es decir cuando se cierra la llave.

// Sintaxis
if (condición) {
  // Este bloque de código se ejecuta si se cumple la condición 
  // o condiciones entre paréntesis
}

// Ejemplo
var usuario;
usuario = 'admin';

if (usuario == 'admin') {
	console.log('eres el administrador');
}

else
Se utiliza en el caso que se quieran ejecutar ciertas líneas de código cuando no se cumple la condición – o las condiciones – que son evaluadas en el if.
Si se cumple la condición se ejecuta el bloque de código que está entre las primeras llaves (a nivel de if).
Si la condición no se cumple se ejecuta el bloque de código que se encuentra en las segundas llaves (después de else). Por último, una vez concluido la interpretación de los bloques (ya sea el de if o else), el programa sigue su flujo después del bloque de código, es decir cuando se cierra la llave.

// Sintaxis
if (condicion) {
  // Este bloque de código se ejecuta si se cumple la condición 
  // o condiciones entre paréntesis
} else {
  // Bloque de código que se va a ejecutar
  // si no se cumple la condición o condiciones
}

// Ejemplo
var usuario;
usuario = 'admin';

if (usuario == 'admin') {
console.log('eres el administrador');
} else {
console.log('no tienes permiso para estar aquí');
}

else if
Se utiliza en el caso que se necesite evaluar diferentes condiciones de manera independiente. Si la primer condición no se cumple se evalúa(n) la(s) siguiente(s) en orden secuencial. Se pueden utilizar varios “else if” (dependiendo de las comparaciones que necesitemos realizar) y, si se quiere, al final se pone un else si es que ninguna comparación se cumple.

// Sintaxis
if (condicion_1) {
  // código que se ejecuta si se cumple la condicion_1
  // Después de que se ejecute este bloque ya no se evalúa la condicion_2 ni el else
} else if (condicion_2) {
  // código que se va a ejecutar
  // si no se cumple la condicion_1 pero si se cumple la condicion_2
  // Después de que se ejecute este bloque ya no se evalúa el else
} else {
  // código que se va a ejecutar
  // si no se cumple la condicion_1 ni la condicion_2
}

// Ejemplo
var usuario;
usuario = 'admin';

if (usuario == 'admin') {
console.log('eres el administrador');
} else if (usuario == 'registrado') {
console.log('bienvenido, solo puedes consultar el material.');
} else {
console.log('no tienes permiso para estar aquí');
}

Obtener valores de verdad

En los ejemplos anteriores hemos obtenido un valor de verdad mediante una condición.
Esta condición está dada por dos valores y un operador de comparación pero en JavaScript podemos obtener valores de verdad con base en el valor de una variable que si bien el funcionamiento es el mismo, la sintaxis puede ser más legible.

Si se necesitan tener dos o más condiciones, éstas se pueden definir dentro de la misma estructura de control utilizando operadores lógicos.

switch / case
Por último, switch permite tener distintos casos de uso dependiendo del valor de una variable.
Puede resultar en una versión más legible de utilizar en lugar de utilizar varios if (else if – else).

// Sintaxis
switch(variable) {
  case valor_1: 
  // código si la variable tiene valor_1
  break
  case valor_2: 
  // código si la variable tiene valor_2  
  break
  case valor_3: 
  // código si la variable tiene valor_3  
  break
  default:
  // Opcional, se puede quitar la opción default.
  // código si la variable no contiene ninguno de los valores anteriores
}  

/*

En switch el bloque de código está delimitado entre los dos puntos después del valor de la variable y la palabra reservada break.

case 'valor_en_texto':
// Bloque de código 
break

Si el valor de la variable no corresponde con ningún caso se puede tener un comportamiento predeterminado, para eso se utiliza la palabra default (funciona como else). 

*/


// Mismo funcionamiento con if 

if (variable == valor_1) {
  // case 1:
} else if (variable == valor_2) {
  // case 2:
} else if (variable == valor_3) {
  // case 3:
} else {
  // default:
}

// Ejemplo

var usuario;
usuario = 'admin';

switch (usuario) { 
case 'admin': 
	console.log(usuario);
	console.log('eres el administrador'); 
	break;
case 'autor': 
	console.log(usuario);
	console.log('puedes publicar contenido');
	break;
case 'registrado':       
	console.log(usuario);
	console.log('bienvenido, solo puedes consultar el contenido.');
	break; 
default:                 
	console.log(usuario);
	console.log('no tienes permiso para estar aquí'); 
}