Bloque {} | break | continue | debbuger | Etiquetas | do…while | for | for…in | function | if…else | return | switch | throw | try…catch…finally | var | while | with
Bloque {}
Javascript define como instrucción al bloque formado por un par de llaves que pueden contener cero o más sentencias.
No tiene ninguna utilidad por si sólo y se utiliza siempre en combinación con otras sentencias de control.
break
Termina el bucle actual o sentencia switch
y salta la ejecución del programa a la siguiente instrucción.
Sintaxisbreak [etiqueta];
break [etiqueta];
La etiqueta opcional permite indicar que instrucción debe ser considerada para el break
siendo especialmente útil en el caso de sentencias anidadas.
Ejemplovar i, j;
loop1:
for (i = 0; i < 3; i++) { // La primera instrucción tiene la etiqueta "loop1"
loop2:
for (j = 0; j < 3; j++) { // La segunda instrucción tiene la etiqueta "loop2"
if (i == 1 && j == 1) {
break loop1; // Termina la ejecución de la primera instrucción
} else {
console.log("i = " + i + ", j = " + j);
}
}
}
ECMA-262 para la utilización sin etiqueta y ECMA-262 Edición 3 para la utilización con etiqueta
var i, j;
loop1:
for (i = 0; i < 3; i++) { // La primera instrucción tiene la etiqueta "loop1"
loop2:
for (j = 0; j < 3; j++) { // La segunda instrucción tiene la etiqueta "loop2"
if (i == 1 && j == 1) {
break loop1; // Termina la ejecución de la primera instrucción
} else {
console.log("i = " + i + ", j = " + j);
}
}
}
continue
Termina el bucle actual y continua la ejecución con la siguiente iteración del bucle.
Sintaxiscontinue [etiqueta];
continue [etiqueta];
La etiqueta opcional permite indicar que instrucción debe ser considerada para el continue
siendo especialmente útil en el caso de sentencias anidadas.
Ejemplovar i, j;
loop1:
for (i = 0; i < 3; i++) { // La primera instrucción tiene la etiqueta "loop1"
loop2:
for (j = 0; j < 3; j++) { // La segunda instrucción tiene la etiqueta "loop2"
if (i == 1 && j == 1) {
continue loop1; // Termina la ejecución de la segunda instrucción
// y ejecuta la siguiente iteración del primer bucle
} else {
console.log("i = " + i + ", j = " + j);
}
}
}
ECMA-262 para la utilización sin etiqueta y ECMA-262 Edición 3 para la utilización con etiqueta
var i, j;
loop1:
for (i = 0; i < 3; i++) { // La primera instrucción tiene la etiqueta "loop1"
loop2:
for (j = 0; j < 3; j++) { // La segunda instrucción tiene la etiqueta "loop2"
if (i == 1 && j == 1) {
continue loop1; // Termina la ejecución de la segunda instrucción
// y ejecuta la siguiente iteración del primer bucle
} else {
console.log("i = " + i + ", j = " + j);
}
}
}
debbuger
Llama al depurador que haya disponible. En caso de no existir un depurador esta instrucción no tiene ningún efecto.
Sintaxisdebbuger;
Ejemploif (i > 1 && j < 0) {
debugger; // Llama al depurador
}
ECMA-262 Edición 5
debbuger;
if (i > 1 && j < 0) {
debugger; // Llama al depurador
}
Etiquetas
Permite identificar una instrucción para indicar que la llamada a break
o continue
hace referencia a ella.
Es especialmente útil cuando se utilizan estas instrucciones dentro de estructuras anidadas y queremos indicar que las ordenes break
o continue
hacen referencia a estructuras superiores.
Sintaxisetiqueta :
sentencia
etiqueta :
sentencia
etiqueta
Puede ser cualquier identificador válido en Javascript.
Ejemplovar i, j;
loop1:
for (i = 0; i < 3; i++) { // La primera instrucción tiene la etiqueta "loop1"
loop2:
for (j = 0; j < 3; j++) { // La segunda instrucción tiene la etiqueta "loop2"
if (i == 1 && j == 1) {
continue loop1; // Ejecuta la siguiente iteración del primer bucle
} else {
console.log("i = " + i + ", j = " + j);
}
}
}
ECMA-262 Edición 3
var i, j;
loop1:
for (i = 0; i < 3; i++) { // La primera instrucción tiene la etiqueta "loop1"
loop2:
for (j = 0; j < 3; j++) { // La segunda instrucción tiene la etiqueta "loop2"
if (i == 1 && j == 1) {
continue loop1; // Ejecuta la siguiente iteración del primer bucle
} else {
console.log("i = " + i + ", j = " + j);
}
}
}
do…while
Crea un bucle que ejecuta una sentencia hasta que la condición es falsa. La condición se evalúa después de ejecutar la sentencia y por lo tanto ejecuta al menos una vez.
Sintaxisdo
sentencia
while (condicion)
do
sentencia
while (condicion)
condicion
Expresión que se evalúa en cada iteración hasta que retorna false y se sale de bucle.
Ejemplovar i = 0;
do {
i += 1;
console.log(i);
} while (i < 5);
ECMA-262 Edición 3
var i = 0;
do {
i += 1;
console.log(i);
} while (i < 5);
for
Crea un bucle con tres partes, la primera que se ejecuta al inicio, la segunda que incluye la condición que mantiene la ejecución hasta que la condición es falsa y la tercera que se ejecuta tras cada iteración.
Sintaxisfor ([expresion-inicial]; [condicion]; [expresion-final])
sentencia
for ([expresion-inicial]; [condicion]; [expresion-final])
sentencia
[expresion-inicial]
Puede ser cualquier tipo de expresión, aunque normalmente son expresiones de definición y/o asignación de variables.
[condicion]
Esta expresión se ejecuta en cada iteración, si es verdadero (true
) se ejecuta la sentencia. Si se omite se considera como verdadero.
[expresion-final]
Tras cada iteración se ejecuta esta expresión. Se suele utilizar para actualizar el contador.
Ejemplofor (var i = 0; i < 9; i++) {
n += i;
console.log(n);
}
ECMA-262
for (var i = 0; i < 9; i++) {
n += i;
console.log(n);
}
for…in
Recorre las propiedades de un objeto y para cada una de ellas ejecuta la sentencia.
Sintaxisfor (variable in objeto)
sentencia
for (variable in objeto)
sentencia
variable
Variable que recogerá el nombre de la propiedad en cada iteración.
objeto
Objeto cuyas propiedades vamos a obtener.
Si en la sentencia se modifican, borran o añaden propiedades del objeto, el resultado no está garantizado.
Ejemplovar resultado = "";
for (var i in objeto) {
resultado += "objeto." + i + " = " + objeto[i] + "\n";
}
console.log(resultado);
ECMA-262
var resultado = "";
for (var i in objeto) {
resultado += "objeto." + i + " = " + objeto[i] + "\n";
}
console.log(resultado);
function
Declara una función.
Sintaxisfunction nombre([parametro1] [, parametro2], [..., parametroN]) {
sentencia
}
function nombre([parametro1] [, parametro2], [..., parametroN]) {
sentencia
}
nombre
Nombre de la función.
parametro
Parámetro o argumento que recibe la función. Pueden definirse hasta 255 parámetros.
Ejemplofunction mas_impuestos(importe) {
return importe * 1.21;
}
function mas_impuestos(importe) {
return importe * 1.21;
}
Las funciones pueden crearse también por medio del operador function
con prácticamente la misma sintaxis y por medio del objeto Function
.
if…else
Ejecuta una sentencia si la condición es verdadera (true
). Si la condición es falsa (false
) la sentencia situada tras la cláusula else
es ejecutada.
Sintaxisif (condicion)
sentencia
[else
sentencia]
if (condicion)
sentencia
[else
sentencia]
condicion
Ejecuta la primera sentencia si la condición es verdadera (true
). Los valores undefined
, null
, 0
, NaN
, o la cadena vacía (""
) se consideran verdaderos. Un objeto Boolean
, aun cuando tenga el valor false, es siempre verdadero.
Una expresión de asignación =
puede ser utilizada dentro de la condición evaluándose el valor asignado, pero esta práctica es confusa, ya que habitualmente lo que utilizaremos serán expresiones de comparación ==
.
Ejemplovar a = 12;
if (a >= 10) {
console.log('a >= 10');
} else {
console.log('a < 10');
}
ECMA-262
var a = 12;
if (a >= 10) {
console.log('a >= 10');
} else {
console.log('a < 10');
}
return
Indica el valor de devuelve la función que la contiene y termina la ejecución de la función.
Sintaxisreturn [expresion];
return [expresion];
[expresion]
Puede ser cualquier expresión válida en Javascript. Si se omite se devuelve undefined
.
Ejemplofunction mas_impuestos(importe) {
return importe * 1.21;
}
ECMA-262 Edición 3
function mas_impuestos(importe) {
return importe * 1.21;
}
switch
Evalúa una expresión y ejecuta la sentencia asociada con la etiqueta que coincida.
Sintaxisswitch (expresion) {
case etiqueta1:
setencia1
[break;]
case etiqueta2:
sentencia2
[break;]
...
case etiquetaN:
sentenciaN
[break;]
default:
setencia_por_defecto
[break;]
}
switch (expresion) {
case etiqueta1:
setencia1
[break;]
case etiqueta2:
sentencia2
[break;]
...
case etiquetaN:
sentenciaN
[break;]
default:
setencia_por_defecto
[break;]
}
expresion
Puede ser cualquier expresión válida en Javascript.
etiqueta:
Corresponden a cada uno de los valores que puede devolver la expresión evaluada.
default:
Si ninguna de las etiquetas coincide con la expresión evaluada, se ejecuta la sentencia que corresponde a esta etiqueta especial.
break
Si no queremos seguir evaluando la expresión una vez se ha encontrado una coincidencia debemos utilizar la instrucción break
.
Ejemplofunction precio_fruta(fruta) {
var precio;
switch (fruta) {
case "Naranjas":
precio = 10;
break;
case "Manzanas":
precio = 12;
break;
case "Plátano":
precio = 9;
break;
case "Cereza":
precio = 8;
break;
case "Mango":
case "Papaya":
precio = 14;
break;
default:
precio = 0;
}
return precio;
}
console.log("El precio de las Cerezas es " + precio_fruta("Cereza"));
ECMA-262
function precio_fruta(fruta) {
var precio;
switch (fruta) {
case "Naranjas":
precio = 10;
break;
case "Manzanas":
precio = 12;
break;
case "Plátano":
precio = 9;
break;
case "Cereza":
precio = 8;
break;
case "Mango":
case "Papaya":
precio = 14;
break;
default:
precio = 0;
}
return precio;
}
console.log("El precio de las Cerezas es " + precio_fruta("Cereza"));
throw
Lanza una excepción personalizada.
Sintaxisthrow expresion;
throw expresion;
expresion
Puede ser cualquier expresión válida en Javascript que será lanzada como excepción.
Ejemplofunction max(numero_positivo) {
if (numero_positivo < 0) {
throw "número negativo";
}
return numero_positivo > 300;
}
try {
console.log("max: " + max(100));
console.log("max: " + max(-100));
} catch (e) {
console.log("ERROR: " + e);
}
ECMA-262 Edición 3
function max(numero_positivo) {
if (numero_positivo < 0) {
throw "número negativo";
}
return numero_positivo > 300;
}
try {
console.log("max: " + max(100));
console.log("max: " + max(-100));
} catch (e) {
console.log("ERROR: " + e);
}
try…catch…finally
Gestiona las excepciones que puedan producirse en el código.
Sintaxistry {
sentencias
}
[catch (excepcion) {
sentencias
}]
[finally {
sentencias
}]
try {
sentencias
}
[catch (excepcion) {
sentencias
}]
[finally {
sentencias
}]
try
El bloque que se sitúa tras la cláusula try
se ejecuta y cualquier excepción que se produzca interrumpirá la ejecución y enviará el programa a la cláusula catch
.
catch (excepcion)
El bloque que se sitúa tras la cláusula catch
se ejecuta cuando se ha producido alguna excepción en el bloque try
. La excepción se recibe en la variable excepcion
que se indica dentro de la cláusula catch
.
finally
El bloque que se sitúa tras la cláusula finally
se ejecuta en todos los casos y es utilizada para asegurarnos que se ejecutan determinadas sentencias se haya o no producido un error, incluso cuando los bloques try
o catch
contengan la instrucción return
.
Ejemplotry {
undefined_function();
} catch(e) {
console.log(e.message);
} finally {
console.log('finally');
}
ECMA-262 Edición 3
try {
undefined_function();
} catch(e) {
console.log(e.message);
} finally {
console.log('finally');
}
var
Declara una variable. En la declaración también es posible realizar una asignación inicial de un valor.
Sintaxisvar variable [= valor] [, variable2 [= valor2] [, variableN [= valorN]] ]
var variable [= valor] [, variable2 [= valor2] [, variableN [= valorN]] ]
variable
Cualquier nombre de variable válido.
= valor
Asignación del valor inicial de la variable.
Se pueden declarar y asignar varias variables dentro de la misma instrucción, sólo hay que encadenar unas con otras por medio de comas.
Aunque el uso de var
es opcional, usarlo o no puede cambiar el comportamiento del programa. Si existe una variable global con igual nombre que una variable local a una función y no se utiliza var
para declarar la variable, se entiende que estamos utilizando la variable global, pero si usamos var
se creará otra variable local con igual nombre, ocultando la variable global.
Las variables se evalúan como si se declararan al principio de cualquier ámbito en el que existen. Por este motivo en ocasiones se producen comportamientos inesperados cuando se declaran variables dentro del código, incluso en secciones de código que no se ejecutan, ya que la variable siempre es declarada al inicio de la función.
Ejemplovar a = 10 // Variable global
function test1() {
var b = 12; // Variable local
return b * a;
}
function test2() {
a = 1; // Modifica la variable global
var b = 12; // Variable local, aunque se define aquí, se define al empezar de la función
return b * a;
}
console.log(test1()); // 120
console.log(test2()); // 12
console.log(test1()); // 12 - la llamada a test2() ha modificado la variable global
ECMA-262 Edición 3
var a = 10 // Variable global
function test1() {
var b = 12; // Variable local
return b * a;
}
function test2() {
a = 1; // Modifica la variable global
var b = 12; // Variable local, aunque se define aquí, se define al empezar de la función
return b * a;
}
console.log(test1()); // 120
console.log(test2()); // 12
console.log(test1()); // 12 - la llamada a test2() ha modificado la variable global
while
Crea un bucle que ejecuta una sentencia hasta que la condición es falsa.
Sintaxisdo
sentencia
while (condicion)
do
sentencia
while (condicion)
condicion
Expresión que se evalúa en cada iteración hasta que retorna false y se sale de bucle.
Ejemplovar i = 0;
while (i < 5) {
i += 1;
console.log(i);
}
ECMA-262
var i = 0;
while (i < 5) {
i += 1;
console.log(i);
}
with
Modifica el alcance de un objeto para que sea considerado como valor por defecto cuando se llama a propiedades y métodos.
Sintaxiswith (expresion)
sentencia
with (expresion)
sentencia
expresion
Cualquier expresión que retorne un objeto.
Las sentencia puede incluir llamadas a propiedades y métodos del objeto sin necesidad de indicar objeto en la llamada.
Ejemplowith (Math) {
console.log(PI); // Normalmente usaríamos Math.PI
console.log(random()); // Normalmente usariamos Math.random()
}
with (Math) {
console.log(PI); // Normalmente usaríamos Math.PI
console.log(random()); // Normalmente usariamos Math.random()
}
Nota: No se recomienda el uso de esta instrucción, ya que es fuente de confusiones y problemas.
use strict