GeezerVison is showing it.javascript.info — Quali valori mostrerà il ciclo while?
torna alle lezioniQuali valori mostrerà il ciclo while?
importanza: 4
Per ogni iterazione del ciclo, scrivi quali valori verranno mostrati e poi confrontali con la soluzione.
Entrambi i cicli mostreranno gli stessi valori in alert, o no?
-
La forma prefissa ++i:
let i = 0;
while (++i < 5) alert( i );
-
La forma postfissa i++
let i = 0;
while (i++ < 5) alert( i );
L’esercizio dimostrava come le forme prefissa/postfissa possono portare a risultati differenti.
-
Da 1 a 4
let i = 0;
while (++i < 5) alert( i );
Il primo valore è i = 1, perchè ++i incrementa prima i e poi ritorna il nuovo valore. Quindi il primo confronto è 1 < 5 e alert mostra 1.
Poi seguono 2, 3, 4… – i valori vengono mostrati uno dopo l’altro. Il confronto utilizza sempre il valore incrementato, perchè ++ è posto prima della variabile.
Ultima iterazione, i = 4 viene incrementato a 5, il confronto while(5 < 5) risulta false, e il ciclo termina. 5 non viene mostrato.
-
Da 1 a 5
let i = 0;
while (i++ < 5) alert( i );
Il primo valore è ancora i = 1. La forma postfissa i++ incrementa i e ritorna il vecchio valore, quindi il confronto i++ < 5 utilizza i = 0 (a differenza di ++i < 5).
La chiamata ad alert è separata. E’ un istruzione che viene eseguita dopo l’incremento di i e il controllo della condizione. Quindi i = 1.
Seguono 2, 3, 4…
Fermiamoci a i = 4. La forma prefissa ++i incrementerebbe ed utilizzerebbe 5 nel controllo della condizione i < 5. Qui però stiamo usando la forma postfissa i++. Quindi incrementa ia 5, ma ritorna il vecchio valore. Il confronto è dunque while(4 < 5) – vero; il controllo passa alla chiamata alert.
Il valore i = 5 è l’ultimo, perchè nell’iterazione successiva avremmo while(5 < 5) e la condizione sarebbe falsa.