Veras la diferencia entre estos ciclos, de forma sencilla y clara.
Empecemos por la sintaxis de un ciclo for:
for (let i = 0; i <= 5 ; i++) {
console.log("El numero de i es: " + i );
}
vemos que en este ciclo estamos imprimiendo los números de i, pero solo aquellos que i respete la condición de que, i <= 5 , entonces, imprimirá del 0,1,2,3,4,5 y el 6 ya no porque no cumple dicha condición.
//
En resumen, en un ciclo for podemos ya crear el contador, es decir la variable que usaremos como contador (let i) la declaramos en si misma dentro del for y ya esta lista para ser usada mientras que en el ciclo while no se puede hacer esto.
Mira este ejemplo de abajo para mayor claridad;
let i = 0;
while (i <= 5 ) {
console.log("El numero de i es: " + i );
i++;
}
Vemos la diferencia que en este tipo de ciclo while, debemos declarar antes ( de forma externa) la variable que usaremos como contador, en este caso ;
let i = 0; y vemos también que a diferencia de for el incremento lo hacemos al final, i++;. y dentro de (),aquí (i <= 5 ) solo se pone la condición que siempre que se cumpla se seguirá ejecutando, sino se detiene el ciclo.
//
En breve es una de las diferencias que mas hay que tener en cuenta.
Curso Práctico de JavaScript