KWALIFIKACJA INF3 - TEST WIEDZY NR 4

PYTANIE NR 40.
Podczas debugowania kodu JavaScript w przeglądarce Chrome natknąłeś się na błąd "Uncaught TypeError". Wybierz najbardziej prawdopodobną przyczynę tego błędu.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Błąd Uncaught TypeError oznacza, że wykonano niedozwoloną operację na wartości danego typu, np. wywołano metodę na undefined albo odwołano się do właściwości null. Słowo "Uncaught" wskazuje, że wyjątek nie został przechwycony w kodzie (brak obsługi).

Pełne wyjaśnienie:

Komunikat Uncaught TypeError w JavaScript informuje o wyjątku typu TypeError, który pojawia się wtedy, gdy kod próbuje wykonać operację niezgodną z typem wartości. Typowe sytuacje to m.in. odwołanie do właściwości lub metody na null albo undefined, wywołanie czegoś, co nie jest funkcją, albo użycie obiektu w sposób, który nie jest dla niego dozwolony.

Dlatego odpowiedź "Próba wykonania operacji na obiekcie niewłaściwego typu" jest najbardziej prawdopodobna: opisuje dokładnie sens TypeError, czyli błąd wynikający z niepoprawnego użycia typu/wartości.

Pozostałe odpowiedzi wskazują na inne klasy problemów:

  • "Zmienna nie została zadeklarowana" zwykle prowadzi do ReferenceError (np. użycie identyfikatora, którego nie ma w zakresie), a nie do TypeError.
  • "Przekroczenie maksymalnej wielkości stosu" jest typowe dla RangeError, często przy zbyt głębokiej rekurencji lub pętli wywołań.
  • "Niewłaściwe użycie słów kluczowych JavaScript" częściej kończy się błędem składni (SyntaxError) albo innym komunikatem, zależnie od sytuacji, a nie klasycznym TypeError.

W praktyce, widząc Uncaught TypeError w Chrome, warto sprawdzić w miejscu wskazanym w stack trace, czy dana zmienna faktycznie ma oczekiwany typ oraz dodać walidację (np. sprawdzenie na null/undefined) lub poprawić logikę inicjalizacji danych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To informacja, że w kodzie wystąpił wyjątek TypeError i nie został obsłużony (nie został "złapany"). Najczęściej oznacza próbę użycia wartości w sposób niezgodny z jej typem, np. wywołanie metody na undefined lub odwołanie do właściwości null.
Bo null i undefined nie mają właściwości ani metod, więc próba np. obj.prop lub obj() kończy się błędem typu. W praktyce dzieje się tak, gdy dane nie zostały zainicjalizowane, wynik zapytania jest pusty albo selektor DOM nic nie zwrócił.
ReferenceError dotyczy braku dostępu do identyfikatora (np. zmienna nie istnieje w zakresie). TypeError występuje, gdy zmienna istnieje, ale ma "złą" wartość/typ do wykonania operacji (np. istnieje, ale jest undefined lub nie jest funkcją).
"Uncaught" oznacza, że wyjątek nie został przechwycony w kodzie przez obsługę błędów (np. try/catch) ani przez mechanizm, który mógłby go obsłużyć. W efekcie błąd przerywa wykonywanie bieżącego fragmentu skryptu i jest raportowany w konsoli.
Najczęściej spotyka się: wywołanie czegoś, co nie jest funkcją; odwołanie do właściwości na null/undefined; użycie metody nieistniejącej dla danego typu (np. metoda tablicowa na stringu); błędne założenia o strukturze danych z API.
W konsoli Chrome kliknij w odnośnik do pliku i numeru linii przy komunikacie błędu. Skorzystaj też ze stack trace (stos wywołań), aby zobaczyć, z jakich funkcji błąd został wywołany. To pomaga ustalić, skąd wzięła się błędna wartość.
Najczęściej tak: użycie niezadeklarowanego identyfikatora skutkuje ReferenceError. Uwaga: czasem problem wygląda jak "brak deklaracji", ale w rzeczywistości zmienna istnieje i ma wartość undefined (np. nie przypisano jej), co potem może prowadzić już do TypeError.
To zwykle RangeError, związany z przepełnieniem stosu wywołań. Występuje np. przy niekończącej się rekurencji, błędnym zdarzeniu wywołującym samo siebie albo pętli wywołań funkcji. Jest to inny problem niż TypeError, choć oba pojawiają się w konsoli.
Stosuj walidację danych i zabezpieczenia: sprawdzaj null/undefined przed użyciem obiektów, używaj opcjonalnego łańcuchowania (gdy dostępne), weryfikuj typy danych z API, a w krytycznych miejscach dodawaj obsługę błędów i czytelne logowanie.
Najpierw rozpoznaj klasę błędu po nazwie (TypeError, ReferenceError, RangeError, SyntaxError). Potem dopasuj typową przyczynę: typ/wartość, zakres zmiennych, przepełnienie stosu lub składnia. Unikaj odpowiedzi ogólnych, jeśli komunikat wskazuje konkretną klasę.
info

Statystycznie 46% uczniów zna prawidłową odpowiedź. trudne

Eksperci podkreślają: "Błąd Uncaught TypeError oznacza, że wykonano niedozwoloną operację na wartości danego typu, np. wywołano metodę na undefined albo odwołano się do właściwości null."

Źródła:

  • MDN Web Docs: TypeError — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError (dostęp: 2026-03-01)
  • MDN Web Docs: ReferenceError — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError (dostęp: 2026-03-01)
  • MDN Web Docs: RangeError — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja MDN: obsługa błędów i wyjątków w JavaScript
  • Dokumentacja MDN: TypeError, ReferenceError, RangeError
  • Dokumentacja Chrome DevTools: Console (interpretacja komunikatów błędów)

Aktualizacja pytania: 31.03.2026

Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego