Acest exercițiu demonstrează cum prefixele/sufixele pot duce la rezultate diferite când sunt comparate.
-
De la 1 la 4
let i = 0; while (++i < 5) alert( i );
Prima valoare este
i = 1
pentru că++i
incrementează prima datăi
și apoi returnează noua valoare. Așadar prima comparație este1 < 5
și funcțiaalert
afișează1
. -
De la 1 la 5
let i = 0; while (i++ < 5) alert( i );
Prima valoare este din nou
i = 1
. Forma cu sufixi++
incrementeazăi
și după returnează vechea valoare, deci comparațiai++ < 5
va folosii = 0
(față de++i < 5
).Dar funcția
alert
se apelează separat. Este altă linie de cod care se execută după incrementare și după comparație. Așadar primeștei = 0
.Apoi urmând
2, 3, 4...
Hai să ne oprim la
i = 4
. Forma cu prefix++i
l-ar incrementa și am folosi5
pentru comparație. Dar aici avem forma cu sufixi++
. Astfel îl incrementează pei
la5
, dar returnează vechea valoare. Datorită faptului că comparația e de faptwhile(4 < 5)
- adevărat și execuția codului continuă cu funcțiaalert
.Valoarea
i = 5
esre ultima, deoarece următorul paswhile(5 < 5)
este fals.