Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki JavaScript

W języku JavaScript stworzono funkcję o nazwie liczba_max porównującą trzy liczby naturalne pobrane z parametrów funkcji i zwracającą maksymalną z nich. Prawidłowe wywołanie takiej funkcji wraz z pobraniem jej wyniku będzie miało postać

A.
var wynik = liczba_max(a, b, c);
B.
liczba_max(a, b, c);
C.
liczba_max(a, b, c, wynik);
D.
liczba_max(a, b, c) = wynik;

Pytanie z egzaminu CKE, czerwiec 2018 (arkusz E.14-X-18.06).

Instrukcja var wynik = liczba_max(a, b, c); jest poprawnym sposobem wywołania funkcji w JavaScript i jednoczesnego pobrania wartości, którą ta funkcja zwraca przez return. Funkcja liczba_max przyjmuje trzy argumenty: a, b oraz c. Wewnątrz może je porównać, np. instrukcjami if albo przez Math.max(a, b, c), a następnie oddać największą wartość do miejsca wywołania. Operator = nie oznacza tutaj porównania, tylko przypisanie, czyli wynik działania funkcji trafia do zmiennej wynik. To jest bardzo częsty schemat w praktycznym kodzie: oblicz coś w funkcji, zwróć rezultat, zapisz go w zmiennej i potem użyj dalej, np. do wypisania na stronie albo sprawdzenia warunku. Z mojego doświadczenia warto pamiętać, że funkcja zwracająca wartość nie musi niczego sama wyświetlać. Może tylko policzyć wynik. W nowszym JavaScript częściej używa się let albo const zamiast var, np. const wynik = liczba_max(a, b, c);, ale sama idea jest identyczna i zgodna z dobrymi praktykami: funkcja ma jasno określone parametry, zwraca jedną wartość, a kod wywołujący decyduje, co z tą wartością zrobić.
W tym pytaniu kluczowe jest rozróżnienie między samym wywołaniem funkcji a wywołaniem funkcji z pobraniem jej wartości zwrotnej. Jeżeli funkcja liczba_max została napisana tak, że zwraca maksymalną liczbę przez instrukcję return, to ten zwrócony wynik trzeba gdzieś przechwycić, najczęściej przez przypisanie do zmiennej. Sam zapis liczba_max(a, b, c); uruchomi funkcję, ale jeżeli nie przypiszemy rezultatu do zmiennej, to wartość zwrotna zostanie po prostu zignorowana. To czasem ma sens przy funkcjach wykonujących efekt uboczny, np. zmieniających DOM albo wypisujących komunikat, ale nie przy funkcji typowo obliczeniowej, która ma zwrócić maksimum.

Błędnym tropem jest też dopisywanie zmiennej wynik jako czwartego argumentu. W JavaScript argumenty przekazuje się do parametrów funkcji, a nie używa dodatkowego argumentu jako miejsca na rezultat, jak czasem spotyka się w innych językach lub w starszym stylu programowania. Jeśli funkcja ma trzy parametry, to logicznie przekazujemy trzy liczby, a wynik odbieramy przez return. Moim zdaniem to jedna z rzeczy, które trzeba sobie dobrze poukładać na początku nauki JS, bo potem łatwiej pisać czyste funkcje.

Niepoprawny jest również zapis liczba_max(a, b, c) = wynik;. Lewa strona operatora przypisania musi być czymś, do czego da się przypisać wartość, np. zmienną, właściwością obiektu albo elementem tablicy. Wynik wywołania funkcji nie jest takim miejscem w pamięci, tylko obliczoną wartością. Standardowa praktyka jest więc prosta: najpierw nazwa zmiennej, potem znak =, a po prawej stronie wyrażenie, które coś oblicza, czyli tutaj wywołanie funkcji.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.