Estructuras de control

JavaScript acepta diferentes tipos de estructuras de control: condicionales y blucles. Es importante anotar que JavaScript no tiene un ambito a nivel de bloques {} en versiones anteriores a ECMAScript 6. Esto significa que es indiferente si declara una variable dentro o fuera del bloque.

var x=1;
{
	var x = 2;
}

console.log(x); // 2

Aqui vemos algunos:

1. Condicional simple

Un condicional evalua la cond y si esta es verdadera ejecuta la primera parte de script si es falta la segundo. Nunca ejecutara ambas.

if (cond){
   ...
}else{
   ...
}

Los siguietes valores se evaluean como falso: false, undefined, null, 0, NaN, cadena vacia (""). El resto de valores incluidos los objetos son evaluados como verdaderos.

var x = new Boolean (false);
if (x) // Esta condicion se avalua true

No confundir los valores primitivos booleanos true y false con el verdadero y falso del objeto Boolean.

if (document.form1.threeChar.value.length == 3){
      return true;
   }else{
      alert("Introduce exactamente tres caracteres. " + document.form1.threeChar.value + " no es válido.");
      return false;
}

Se puede concatenar condiciones usando OR y AND.

2. Condicional multiple

2.1 Condicional multiple

if (cond 1){
   ...
}else if (cond 2){
   ...
}else if (cond 3){
   ...
}else{
   ...
}

2.2 Condicional multiple

Una sentencia switch permite a un script evaluar una expresión e intentar igualar el valor de dicha expresión a una etiqueta de caso (case). Si se encuentra una coincidencia ejecutas las sentencia asociada.

switch (exp){
case val1:
   ...
   break;
case val2:
   ...
   break;
default:
   ...
}

De no usar break el script continuaria ejecutando las siguientes sentencias de los demas casos.

var x="fresa";
switch (x){
case "uva":
   console.log("Las uvas cuestan 6.90 soles kg.");
   break;
case "fresa":
   console.log("Las fresas cuestan 9.50 soles kg.");
   break;
 default:
   console.log("Todas las demas frutas cuestan 3.80 soles kg.");
}

3. Bucle fijo

Los bucles ofrecen una manera rapida y facil de hacer algo repetidas veces. El bucle fijo se usa cuando se sabe de antemano el numero de veces que tenemos que ejecutar las sentencias.

for (ini; cond; incremento){
   ...
}
var n;
for (n=0; n<5; n++){
   ...
}

4. Bucle de elementos

Los bucles ofrecen una manera rapida y facil de hacer algo repetidas veces. Este bucle esta recomendado especialmente cuando debemos hacer algo con todas las propiedades de un objeto o los elementos de una matriz. Mientras for..in actua sobre nombre de propiedades, for..of lo hace sobre los valores de las propiedades.

for (variable in objeto/matriz){
   ...
}
for (variable of objeto/matriz){
   ...
}
let matriz = [3,5,7];
matriz.ult = "Hola";
for (let i in matriz){
   console.log(i);  //0,1,2,ult
}
for (let i of matriz){
   console.log(i);  //3,5,7,Hola
}
let matriz = [3,5,7];
for (let i in matriz){
   
   resp += obj + "." + i + " = " + obj[i] + "
"; }

5. Bucle condicional

Los bucles ofrecen una manera rapida y facil de hacer algo repetidas veces. El bucle condicional se usa cuando el numero de veces a ejecutar el codigo dependera de ciertas condiciones internas que las propias sentencias vana alterando.

5.1 Bucle condicional previo

while (cond){
   ...
}
n=0;
while (n<3){
	...
	n++;
}

5.1 Bucle condicional posterior

do{
   ...
}while (cond);

n=0;
do{
	...
	n++;
}while (n<3)

7. Manejo de excepciones

Puedes lanzar excepciones usando la sentencia throw y manejarlas usando las sentencias try...catch. Prácticamente cualquier objecto puede ser lanzado en JavaScript. Sin embargo, no todos los objetos lanzados son creados igual. Mientras que es bastante común lanzar números o cadenas como errores, frecuentemente es más efectivo usar una excepcion específicamente creada para este proposito.

throw exp;
throw 42;         // Tipo número
throw "Error2";   // Tipo cadena
throw true;       // Tipo booleano
throw {toString: function() { return "Soy un objeto"; }};

La sentencia try...catch marca un bloque de instrucciones a intentar que pueden causar alguna excepción, y declarar una o más respuestas en caso de que una excepción sea arrojada. Si una excepción es arrojada, la sentencia try...catch se encarga de atraparla.

7. Salto

Es un identificador que permite luego referirse a él desde cualquier lugar del script. Por ejemplo, usted puede usar un label para identificar un bucle y usar las sentencias

  • break
  • o
  • continue
  • para indicar si el script debe interrumpir un bucle o continuar su ejecución.

    label:
       ...
    
    aqui:
    	...
    

    8. Break

    Se usa para salir de un bucle. Cuando usas break dentro de un swtch, for, while o do-while se transfiere el control a la siguiente sentecia fuera del bucle. Cuando usas break label te lleva al label.

    break;
    break label;
    

    9. Continue

    Termina la iteración en curso dentro del bucle de una sentencia for, while o do-while y continúa la ejecución del bucle con la siguiente iteración. A diferencia de la sentencia break, continue no termina la ejecución del bucle, solo interrumpe la ejecucion y regresa a evaluar la condicion (while). En un bucle for, salta a incrementar. Cuando se usa continua con una etiqueta simplemente salta a la etiqueta.

    continue;
    continue label;