var x = 2 if (x == 3) { document.write("x vale 3") }En este caso, al no devolver true la condición, no se obtiene ningún resultado. Si queremos una alternativa en el caso de false, se escribe:
var x = 2 if (x == 3) { document.write("x vale 3") } else { document.write("x no vale 3") }Y se obtiene:
x no vale 3
Si la acción a realizar es breve, también puede escribirse en una sola línea:
var x = 2
if (x == 3) document.write("x vale 3")
Pueden anidarse cuantas instrucciones if sea preciso. Por ejemplo, si se escribe:
var x = 4
if (x < 3)
if (x == 2) document.write("x vale 2")
if (x == 1) document.write("x vale 1")
else
if (x == 3) document.write("x vale 3")
if (x == 4) document.write("x vale 4")
if (x == 5) document.write("x vale 5")
Y se obtiene:
x vale 4
Cuando escribas anidamientos, recuerda que si las instrucciones a realizar tienen más de una línea, hay que escribir las correspondientes llaves { } para cada grupo de instrucciones en cada if, tal como se ve en el primer y segundo ejemplos.
for([contador;] [condicion;] [incremento]) {
.....
instrucciones
....
}
La primera expresión de los argumentos, contador, define el contador del bucle y lo inicializa. La segunda, condicion, es donde se declara la condición o condiciones que se tienen que cumplir para que el bucle termine. El bucle seguirá ejecutándose hasta que la expresión devuelva true. Y por último, incremento indica el incremento que se aplicará al contador en cada paso. Por ejemplo:
for(var x = 0; x < 5; x++) {
document.write(x)
}
Se obtiene: 01234 Analicemos el ejemplo. La primera expresión de los argumentos, crea e inicializa a cero el contador x: var x = 0;. La segunda establece que el bucle rodará mientras x sea menor de 5: x < 5;. Y la tercera incrementa en 1 el contador con cada ciclo del bucle: x++. Como ya se ha dicho en el apartado de los operadores de JavaScript, x++ es equivalente a x = x+1
Mi_array = new Array(2)
for(var x in Mi_array) {
Mi_array[0] = "A"; Mi_array[1] = "B"; Mi_array[2] = "C"
document.write("Mi_array" + x + " = " + Mi_array[x] + "<br>" )
}
Se obtiene:
Mi_array0 = A
Mi_array1 = B
Mi_array2 = C
Fíjate en que, a diferencia de la anterior, no es necesario inicializar el contador con ningun valor (solamente crearlo) ni tampoco indicar el incremento ni el número de repeticiones del bucle, que se repetirá las veces que indique el índice del objeto.
var x = 0 while( x < 3 ) { x++ document.write("x = " + x + "<br>") }
Se obtiene:
x = 1
x = 2
x = 3
Como puedes ver, el bucle se ejecuta mientras x es menor que 3, no siendo necesario definir en la propia instrucción el incremento del contador, que está dentro de las instrucciones ejecutadas por el bucle.
Tanto while() como for() pueden utilizar una instrucción que permite salir del bucle, si conviene, antes de que se cumplan todas las repeticiones programadas en el contador. Se trata de break. También pueden emplear la instrucción continue para alterar el contador sin detenerlo ni salir del bucle. Veamos un ejemplo de uso de continue:
var x = 0 var y = 0 while (i < 5) { x++ if (x == 3) continue y += x document.write("x = " + x + " y = " + y + "<br>") }Se obtiene:
x = 1 y = 1
x = 2 y = 3
x = 4 y = 7
x = 5 y = 12
Recuerda que x++ es equivalente a x = x + 1, lo mismo que y += x equivale a y = y + x. Sabiendo esto, puedes ver claramente lo que hace el bucle en los dos primeros ciclos. Al llegar a la tercera línea, en la que x = 3 vemos que hay un salto. En efecto: continue ha entrado en acción y el control del bucle ha saltado desde la instrucción comenzando un nuevo ciclo sin ejecutar las dos instrucciones que restaban, y que habrían aportado x = 3 y = 6. Luego el bucle termina normalmente hasta que x = 5, pero los valores de y se han alterado respecto a los que serían sin actuar continue.
De forma parecida trabaja break, pero en este caso en lugar de provocar un salto en el bucle y continuar hasta el final previsto, el salto se hace fuera del bucle, quedando éste interrumpido:
var x = 0 while (i < 5) { x++ if (x == 3) break document.write("x = " + x + "<br>") }Se obtiene:
x = 1
x = 2
Como puedes ver, solamente se han completado dos ciclos del bucle de los cinco previstos. Estas dos instrucciones pueden emplearse de la misma forma con la instrucción for().
<HTML> <HEAD> <TITLE>Pruebas JScript</TITLE> <SCRIPT LANGUAGE="JavaScript"> function validar(numero) { if (numero.indexOf("2") != -1) return true; else { alert('No has escrito un 2'); return false; } } </SCRIPT> </HEAD> <BODY> <FORM NAME="Formulario" METHOD="GET" ACTION " " onSubmit="return validar(this.campo1.value)"> Escribe un 2: <INPUT NAME="campo1" TYPE="text"><BR> <INPUT TYPE="submit" VALUE="Validar"> </FORM> </BODY> </HTML>Fíjate en la instrucción this.campo1.value En realidad lo que hace this es sustituir a la referencia real que sería: document.Formulario.campo1.value
var a, b, c var r=10 a = Math.PI * r * r b = r * Math.cos(Math.PI) c = r * Math.sin(Math.PI/2)Como puedes ver, hay que hacer referencia del objeto Math en todas las instrucciones. En cambio, si se emplea with, simplemente se escribe:
var a, b, c var r=10 with (Math) { a = PI * r * r b = r * cos(PI) c = r * sin(PI/2) }