Dla dowolnej liczby całkowitej a z przedziału (0, 99) zadaniem funkcji zapisanej w języku JavaScript jest
function fun1(a) { for (n = a; n < 100; n++) document.write(n); return n; }
A. zwrócenie liczb z przedziału a .. 99
Źle. return oddaje jedną wartość, a liczby z przedziału są wypisywane przez document.write.
B. wypisanie liczb z przedziału a .. 99 i zwrócenie wartości 100
Dobrze. Pętla wypisuje a .. 99, a po niej n ma wartość 100 i to ją zwraca return.
C. wypisanie wartości zmiennej a oraz zwrócenie wartości zmiennej a
Źle. Pętla wypisuje cały ciąg od a do 99, a zwracana jest wartość n po pętli.
D. wypisanie liczb z przedziału a .. 100 i zwrócenie wartości 101
Źle. Pętla działa, dopóki n jest mniejsze od 100, więc 100 nie zostanie wypisane, a zwracana jest 100, nie 101.
Funkcja wypisuje liczby od a do 99 i zwraca wartość 100. Pętla
for (n = a; n < 100; n++) zaczyna od a i wykonuje document.write(n), dopóki n jest mniejsze od 100. Po wypisaniu 99 licznik zwiększa się do 100, warunek n < 100 staje się fałszywy i pętla się kończy. Instrukcja return n; stoi za pętlą, więc zwraca wartość, przy której pętla się zatrzymała, czyli 100. Do zapamiętania: po zakończeniu pętli licznik ma pierwszą wartość, która NIE spełnia warunku. Przy n <= 100 funkcja wypisałaby jeszcze 100 i zwróciła 101. Zmienną licznika lepiej deklarować przez let n, aby nie powstała zmienna globalna.Najczęstszy błąd to pomylenie ostatniej wypisanej liczby z wartością zwracaną.
document.write wypisuje kolejne liczby, a return oddaje tylko jedną wartość - funkcja nie może zwrócić całego przedziału liczb. Warunek n < 100 jest ostry, więc 100 nie zostanie wypisane; wersja z wypisaniem do 100 i zwróceniem 101 pasowałaby do warunku n <= 100. Wypisanie tylko a i zwrócenie a pomija działanie pętli: zmienna n rośnie przy każdym obiegu, więc na ekran trafia cały ciąg liczb, a zwracana jest wartość n, nie a. Prześledź krańce: dla a = 98 pętla wypisze 98 i 99, potem n osiąga 100, warunek przestaje być spełniony i return n oddaje 100. To samo dzieje się dla każdego a z przedziału. Taki „test krańców” to dobra metoda przy każdym pytaniu o pętlę: sprawdź pierwszy i ostatni obieg oraz wartość licznika po wyjściu z pętli.