Quelles valeurs affiche la boucle while ?
A votre avis, quelles sont les valeurs affichées pour chaque boucle ? Notez-les puis comparer avec la réponse.
Les deux boucles affichent-elles les mêmes valeurs dans lâalert ou pas ?
-
Le préfixe sous forme
++i:let i = 0; while (++i < 5) alert( i ); -
Le postfixe sous forme
i++:let i = 0; while (i++ < 5) alert( i );
Lâexercice montre comment les formes postfix/prefix peuvent conduire à des résultats différents lorsquâils sont utilisés dans des comparaisons.
-
De 1 Ã 4
let i = 0; while (++i < 5) alert( i );La première valeur est
i=1, parce que++iincrémente dâabordipuis renvoie la nouvelle valeur. La première comparaison est donc1 < 5etalertindique1.Ensuite, viennent
2,3,4â¦â les valeurs apparaissent les unes après les autres. La comparaison utilise toujours la valeur incrémentée, car++est avant la variable.Enfin,
i=4est incrémenté Ã5, la comparaisonwhile(5 < 5)échoue et la boucle sâarrête. Donc5nâest pas affiché. -
De 1 Ã 5
let i = 0; while (i++ < 5) alert( i );La première valeur est encore
i=1. La forme postfixée dei++incrémenteipuis renvoie lâancienne valeur, la comparaisoni++ < 5utilisera donci=0(contrairement Ã++i < 5).Mais lâappel dâ
alertest séparé. Câest une autre instruction qui sâexécute après lâincrémentation et la comparaison. Donc, on obtienti=1.Ensuite viennent
2,3,4â¦Arrêtons-nous sur
i=4. Le préfixe sous forme++ilâincrémenterait et utiliserait5dans la comparaison. Mais ici nous avons la forme postfixéei++. Donc,iaugmente Ã5, mais renvoie lâancienne valeur. Par conséquent, la comparaison est en réalitéwhile(4 < 5)â true, et le contrôle continue Ãalert.La valeur
i=5est la dernière, car à lâétape suivantewhile(5 <5)est faux.