¿Qué valores serán mostrados por el bucle while?
Para cada iteración del bucle, escribe qué valor será impreso y luego compáralo con la solución.
Ambos bucles ¿alertan los mismos valores?
-
La forma de prefijo
++i:let i = 0; while (++i < 5) alert( i ); -
La forma de sufijo
i++let i = 0; while (i++ < 5) alert( i );
La tarea demuestra cómo las formas de sufijo y prefijo pueden llevar a diferentes resultados cuando son usadas en comparaciones.
-
Del 1 al 4
let i = 0; while (++i < 5) alert( i );El primer valor es
i = 1, porque++iprimero incrementaiy luego retorna el valor nuevo. Así que la primera comparación es1 < 5y elalertmuestra1.Entonces siguen
2, 3, 4…– los valores son mostrados uno tras otro. La comparación siempre usa el valor incrementado, porque++está antes de la variable.Finalmente,
i = 4es incrementada a5, la comparaciónwhile(5 < 5)falla, y el bucle se detiene. Así que5no es mostrado. -
Del 1 al 5
let i = 0; while (i++ < 5) alert( i );El primer valor es de nuevo
i = 1. La forma del sufijo dei++incrementaiy luego retorna el valor viejo, así que la comparacióni++ < 5usarái = 0(contrario a++i < 5).Pero la llamada a
alertestá separada. Es otra declaración, la cual se ejecuta luego del incremento y la comparación. Así que obtiene eli = 1actual.Luego siguen
2, 3, 4…Detengámonos en
i = 4. La forma del prefijo++ilo incrementaría y usaría5en la comparación. Pero aquí tenemos la forma del sufijoi++. Así que incrementaia5, pero retorna el valor viejo. Por lo tanto, la comparación es en realidadwhile(4 < 5)– verdadero, y el control sigue aalert.El valor
i = 5es el último, porque el siguiente pasowhile(5 < 5)es falso.