KWALIFIKACJA INF3 - STYCZEŃ 2023

PYTANIE NR 11.
Na podstawie przedstawionego kodu w języku JavaScript można powiedzieć, że alert nie zostanie wyświetlony, ponieważ
Ilustracja przedstawia fragment kodu w języku JavaScript, który jest częścią pytania egzaminacyjnego dla kwalifikacji
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W JavaScript instrukcja switch dopasowuje case przez porównanie ścisłe (bez konwersji typów).
Jeśli x ma inny typ niż wartości w case (np. liczba vs napis), to żaden case nie zostanie wykonany i alert się nie pojawi. Brak default ani brak break nie tłumaczy samego braku wejścia w case.

Pełne wyjaśnienie:

Instrukcja switch w JavaScript wybiera gałąź case na podstawie dopasowania wartości wyrażenia (np. x) do etykiet case. Kluczowe jest to, że dopasowanie odbywa się w praktyce jak przy porównaniu ścisłym (bez automatycznej zmiany typu). Oznacza to, że wartości 1 (liczba) i "1" (łańcuch znaków) nie są uznawane za równe.

Dlatego jeżeli zmienna x ma np. typ liczbowy, a w instrukcji switch w etykietach case zapisano wartości jako napisy, to nie nastąpi dopasowanie i kod w tych gałęziach (w tym alert) nie zostanie uruchomiony. To uzasadnia odpowiedź: "w instrukcji switch w wyrażeniu case nie dostosowano zapisu wartości do typu zmiennej x."

Dlaczego pozostałe odpowiedzi są błędne w tym kontekście?

  • "nie zastosowano wyrażenia default"default odpowiada za zachowanie, gdy nie ma dopasowania. Sam jego brak nie jest przyczyną "techniczną"; przyczyną bazową jest to, że nie trafiono w żaden case (tu: przez typ). Default może być dodatkiem, ale nie wyjaśnia źródła niedopasowania.
  • "wartość zmiennej x nie została zdefiniowana" – gdyby x nie istniała, najczęściej doszłoby do błędu wykonania (ReferenceError), a nie "cichego" braku alertu wynikającego z logiki switch. To inny mechanizm problemu.
  • "nie zastosowano instrukcji break" – brak break powoduje tzw. fall-through (przejście do kolejnych case), ale dopiero po wejściu do jakiegoś case. Jeśli nie ma dopasowania do żadnego case, brak break nie ma znaczenia dla uruchomienia alertu.

W praktyce, aby uniknąć takich błędów, należy ujednolicić typy (np. rzutować dane wejściowe do liczby) albo zapisywać etykiety case zgodnie z typem zmiennej.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

switch porównuje wartość wyrażenia (np. x) z kolejnymi etykietami case i wykonuje kod od pierwszego dopasowania.

Jeśli nie ma dopasowania, może wykonać default (jeśli istnieje). Bez break wykonanie przechodzi do następnych case (fall-through).

W JavaScript dopasowanie w switch jest skutecznie oparte na porównaniu ścisłym, więc 1 i "1" to różne wartości.

Gdy typy nie pasują (liczba vs napis), żaden case nie zadziała, nawet jeśli "na oko" wygląda, że wartości są takie same.

Jeśli żaden case nie pasuje, a nie ma default, to blok switch po prostu nic nie wykona.

To bywa poprawne (gdy brak akcji jest zamierzony), ale w zadaniach egzaminacyjnych często oznacza pominięty wariant lub błąd dopasowania, np. przez zły typ danych.

Brak break powoduje przejście do kolejnych gałęzi (fall-through). To jest błędem, gdy przypadkowo wykonują się kolejne instrukcje.

Bywa celowe, gdy kilka case ma robić to samo. Wtedy często stosuje się grupowanie case i jeden wspólny blok z break na końcu.

Najprościej dodać tymczasowe logowanie, np. console.log(x, typeof x) przed switch oraz komunikaty w poszczególnych case.

Jeśli nic się nie wykonuje, sprawdź zgodność wartości i typów w case, a także czy istnieje gałąź default do obsługi "pozostałych" danych.

Masz dwie typowe drogi: (1) zmienić etykiety case na liczby, albo (2) zrzutować x na napis, aby typy się zgadzały.

W praktyce częściej rzutuje się dane wejściowe do oczekiwanego typu (np. z formularza) zanim trafią do switch.

Nie należy na to liczyć. switch dopasowuje case bez "magicznej" konwersji typów jak w luźnym porównaniu ==.

Dlatego bezpieczniej jest używać spójnych typów i jawnych konwersji (np. Number(), String()) zamiast zakładać, że silnik sam dopasuje liczbę do napisu.

Najczęstsze pomyłki to: nieuwzględnianie typu (np. "2" vs 2), brak break powodujący wykonanie wielu case oraz brak default przy danych spoza listy.

Warto też uważać na literówki w wartościach case i na to, skąd pochodzi wartość zmiennej (np. z formularza jako napis).

switch jest wygodny, gdy porównujesz jedną wartość z wieloma stałymi wariantami. Jeśli warunki są złożone (przedziały, wiele zmiennych, operatory logiczne), często czytelniejsze jest if/else.

Na egzaminie sprawdź, czy porównujesz "jedno do wielu" (switch) czy liczysz warunki logiczne (if).

Przećwicz krótkie fragmenty kodu: switch z różnymi typami (number/string), z i bez default, oraz przypadki z brakującym break.

W czasie rozwiązywania zapisuj sobie: wartość zmiennej, jej typ (typeof), i wskaż, który case realnie może się dopasować.

info

Około 44% zdających odpowiada poprawnie na to pytanie. trudne

Specjaliści zwracają uwagę: "Brak default ani brak break nie tłumaczy samego braku wejścia w case."

Źródła:

  • ECMA-262 (ECMAScript Language Specification), sekcja "SwitchStatement" (algorytm dopasowania case): https://tc39.es/ecma262/#sec-switch-statement - dostęp 2026-02-18
  • MDN Web Docs, "switch": https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch - dostęp 2026-02-18
  • MDN Web Docs, "Strict equality (===)": https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality - dostęp 2026-02-18

Materiały:

  • Dokumentacja MDN: instrukcja switch w JavaScript
  • Dokumentacja MDN: operatory porównania i ścisła równość
  • Specyfikacja ECMAScript (ECMA-262): sekcja dotycząca SwitchStatement

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego