Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/03/2014, 02:55
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 4 meses
Puntos: 206
Respuesta: ¿Qué falla en el bucle?

No es necesario poner tres parámetros. De hecho, no es necesario poner ninguno, bastaría con poner los dos punto y comas. for (;;){} formando un bucle infinito. Las lógica para parar el bucle iría dentro del "cuerpo" del bucle.
Los puntos y comas dividen el for en tres zonas: La primera sirve para inicializar variables, todas las que quieras, separadas por comas. Se ejecutará una sola vez, justo al principio.
Código Javascript:
Ver original
  1. for (var i=0, n=array.length, j=0;;){}

La segunda es una comparación booleana, y se ejecuta al principio de cada vuelta del bucle for. Es una expresión booleana (TRUE O FALSE) Mientras esté a true, el FOR seguirá ejecutándose.
Código Javascript:
Ver original
  1. for  for (var i=0, n=array.length;i<n && j!=5;){}

La tercera zona sirve para ejecutar instrucciones en cada vuelta del bucle, después de ejecutarse la comparación booleana anterior, y antes de ejecutar el contenido del for. Típicamente sirve para asignar valores a las variables de la primera parte para que el booleano de la segunda parte devuelva un false en algún momento, para que deje de ejecutarse el bucle del for. Para ejecutar varias instrucciones, sepáralas con comas. Pero por poder, puede ejecutar cualqueir cosa.
Código Javascript:
Ver original
  1. for  for (var i=0, n=array.length, j=10;i<n && j!=5; i++, j--){}

Tampoco es estrictamente necesario que el FOR tenga "cuerpo", es decir, código entre sus llaves "{" y "}". Por ejemplo, un for que eleva al cubo cualquier array de números, si tener "cuerpo":
Código Javascript:
Ver original
  1. var arr=[1,2,3,4,5,6,7,8,9,10];
  2. for (var i=0, n=arr.length; i<n; arr[i]=Math.pow(arr[i++],3));