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:
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.
if (cond 1){ ... }else if (cond 2){ ... }else if (cond 3){ ... }else{ ... }
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."); }
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++){ ... }
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] + "
"; }
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.
while (cond){ ... }
n=0; while (n<3){ ... n++; }
do{ ... }while (cond);
n=0; do{ ... n++; }while (n<3)
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.
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
label: ...
aqui: ...
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;
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 ejecución 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;