Které hodnoty zobrazà cyklus while?
Pro oba cykly si zapiÅ¡te hodnoty, které budou vypsány, a pak je porovnejte s ÅeÅ¡enÃm.
VypÃÅ¡e alert v obou cyklech stejné hodnoty, nebo ne?
-
Prefixová notace
++i:let i = 0; while (++i < 5) alert( i ); -
Postfixová notace
i++let i = 0; while (i++ < 5) alert( i );
Tato úloha ukazuje, jak může prefixová a postfixová notace vést k rozdÃlným výsledkům, když je použijeme v porovnánÃ.
-
Od 1 do 4
let i = 0; while (++i < 5) alert( i );Prvnà hodnota je
i = 1, jelikož++inejprve zvýšÃia pak vrátà novou hodnotu. Prvnà porovnánà je tedy1 < 5aalertzobrazÃ1.NásledujÃ
2, 3, 4â¦â hodnoty se zobrazà jedna po druhé. Porovnánà se vždy dÃvá na zvýšenou hodnotu, protože++je pÅed promÄnnou.Nakonec
i = 4se zvýšà na5, porovnánÃwhile(5 < 5)neuspÄje a cyklus skonÄÃ. Takže5se nezobrazÃ. -
Od 1 do 5
let i = 0; while (i++ < 5) alert( i );Prvnà hodnota je opÄt
i = 1. Postfixová notacei++zvýšÃia pak vrátà starou hodnotu, takže porovnánÃi++ < 5se dÃvá nai = 0(na rozdÃl od++i < 5).AvÅ¡ak
alertse volá oddÄlenÄ. Je to dalšà pÅÃkaz, který se spustà až po zvýšenà a porovnánÃ. Proto obdržà aktuálnÃi = 1.NásledujÃ
2, 3, 4â¦Zastavme se u
i = 4. Prefixová notace++iby je zvýšila a v porovnánà by použila5. Tady vÅ¡ak máme postfixovou notacii++. Ta zvýšÃina5, ale vrátà starou hodnotu. Proto se provede porovnánÃwhile(4 < 5)â pravda, tudÞ ÅÃzenà pÅejde kalert.Hodnota
i = 5je poslednÃ, jelikož dalšà krokwhile(5 < 5)dává nepravdu.