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 = 1pentru că++iincrementează prima datăiși apoi returnează noua valoare. Așadar prima comparație este1 < 5și funcțiaalertafiș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++ < 5va folosii = 0(față de++i < 5).Dar funcția
alertse 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++il-ar incrementa și am folosi5pentru comparație. Dar aici avem forma cu sufixi++. Astfel îl incrementează peila5, 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 = 5esre ultima, deoarece următorul paswhile(5 < 5)este fals.