Quelles valeurs affiche la boucle while ?
A votre avis, quelles sont les valeurs affiches pour chaque boucle ? Notez-les puis comparer avec la rponse.
Les deux boucles affichent-elles les mmes valeurs dans lalert ou pas ?
-
Le prfixe sous forme
++i:let i = 0; while (++i < 5) alert( i ); -
Le postfixe sous forme
i++:let i = 0; while (i++ < 5) alert( i );
Lexercice montre comment les formes postfix/prefix peuvent conduire des rsultats diffrents lorsquils sont utiliss dans des comparaisons.
-
De 1 4
let i = 0; while (++i < 5) alert( i );La premire valeur est
i=1, parce que++iincrmente dabordipuis renvoie la nouvelle valeur. La premire comparaison est donc1 < 5etalertindique1.Ensuite, viennent
2,3,4les valeurs apparaissent les unes aprs les autres. La comparaison utilise toujours la valeur incrmente, car++est avant la variable.Enfin,
i=4est incrment5, la comparaisonwhile(5 < 5)choue et la boucle sarrte. Donc5nest pas affich. -
De 1 5
let i = 0; while (i++ < 5) alert( i );La premire valeur est encore
i=1. La forme postfixe dei++incrmenteipuis renvoie lancienne valeur, la comparaisoni++ < 5utilisera donci=0(contrairement++i < 5).Mais lappel d
alertest spar. Cest une autre instruction qui sexcute aprs lincrmentation et la comparaison. Donc, on obtienti=1.Ensuite viennent
2,3,4Arrtons-nous sur
i=4. Le prfixe sous forme++ilincrmenterait et utiliserait5dans la comparaison. Mais ici nous avons la forme postfixei++. Donc,iaugmente5, mais renvoie lancienne valeur. Par consquent, la comparaison est en ralitwhile(4 < 5)true, et le contrle continuealert.La valeur
i=5est la dernire, car ltape suivantewhile(5 <5)est faux.