KWALIFIKACJA INF3 - CZERWIEC 2016

PYTANIE NR 28.
W JavaScript wynik operacji jest równy wartości NaN, jeśli skrypt próbował wykonać
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
NaN (Not-a-Number) pojawia się w JavaScript, gdy wynik ma być liczbą, ale nie da się go poprawnie wyliczyć, np. przy działaniach arytmetycznych na wartości, która jest napisem i nie reprezentuje liczby. Wtedy konwersja do liczby się nie udaje i wynikiem jest NaN.

Pełne wyjaśnienie:

W JavaScript NaN to specjalna wartość typu liczbowego, która oznacza, że wykonano operację oczekującą wyniku liczbowego, ale nie dało się uzyskać poprawnej liczby. Najczęściej dzieje się tak, gdy skrypt wykonuje działanie arytmetyczne (np. odejmowanie, mnożenie, dzielenie) na danych, które są napisem i nie mogą zostać sensownie zamienione na liczbę.

Dlatego poprawne jest stwierdzenie: "działanie arytmetyczne, a zawartość zmiennej była napisem." Jeśli napis nie jest poprawną reprezentacją liczby (np. zawiera litery), JavaScript podczas próby obliczeń uzyska wynik NaN zamiast liczby.

Pozostałe odpowiedzi nie pasują do definicji NaN:

  • Użycie parseFloat zamiast parseInt na zmiennej liczbowej nie jest typową przyczyną NaN. Obie funkcje służą do parsowania, a gdy wejście jest już liczbą, wynik zwykle pozostaje liczbą (różnica dotyczy części ułamkowej, nie "psucia" wyniku do NaN).
  • Działanie arytmetyczne na dwóch dodatnich liczbach daje poprawny wynik liczbowy (o ile nie wystąpią szczególne przypadki jak dzielenie przez 0, które prowadzi do Infinity, a nie do NaN).
  • Sprawdzanie długości napisu na liczbie nie jest klasyczną sytuacją skutkującą NaN; to raczej problem niezgodności typu (np. brak właściwości), a nie "wynik arytmetyczny niebędący liczbą".

W praktyce, aby unikać NaN, warto walidować dane wejściowe (np. z formularzy), jawnie konwertować do liczby i sprawdzać wynik (np. funkcjami przeznaczonymi do wykrywania NaN) zanim wykona się dalsze obliczenia.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
NaN to specjalna wartość typu number oznaczająca "nie-liczbę". Pojawia się, gdy JavaScript próbuje wykonać operację liczbową, ale nie da się uzyskać poprawnej liczby (np. nieudana konwersja napisu do liczby podczas arytmetyki).
Operatory arytmetyczne (np. -, *, /) wymagają liczb. Gdy operand jest napisem, JavaScript próbuje go zamienić na liczbę. Jeśli napis nie jest poprawną reprezentacją liczby, konwersja się nie udaje i wynikiem staje się NaN.
Najbezpieczniej użyć funkcji przeznaczonej do tego celu, np. Number.isNaN, która zwraca true tylko dla NaN. Unikaj polegania na porównaniu x === NaN, bo NaN nie jest równe żadnej wartości, nawet samemu sobie.
Nie zawsze. Dzielenie przez zero dla niezerowej liczby zwykle daje Infinity lub -Infinity. NaN częściej pojawia się, gdy obliczenie nie ma sensu liczbowego, np. gdy po konwersji argumentów nie da się uzyskać poprawnej liczby.
Najczęściej są to wartości z pól tekstowych, które wyglądają "prawie" jak liczby, ale zawierają znaki dodatkowe (np. spacje, litery, przecinki w złym formacie). Jeśli taki napis trafi do obliczeń bez walidacji i konwersji, łatwo uzyskać NaN.
Tak. Gdy argument nie zaczyna się od poprawnego zapisu liczby, parsowanie może zakończyć się niepowodzeniem i funkcja zwróci NaN. W praktyce warto sprawdzić wynik po parsowaniu i obsłużyć przypadek błędnych danych wejściowych.
NaN to wartość, którą program może dalej przenosić w obliczeniach (często "zakaża" kolejne działania). Błąd wykonania (exception) zwykle przerywa działanie danego fragmentu kodu, jeśli nie zostanie przechwycony. NaN nie musi przerwać programu, ale sygnalizuje problem z danymi.
Najczęściej: działania arytmetyczne na napisach, nieudane parsowanie liczby z tekstu, wczytanie danych z formularza bez konwersji oraz operacje matematyczne na wartościach nieokreślonych. Na egzaminie zwracaj uwagę na typ danych w zmiennej.
Nie. Operator + bywa używany także do konkatenacji napisów. Gdy jeden operand jest napisem, wynikiem może być napis (sklejenie), a nie NaN. NaN typowo pojawia się przy operatorach stricte arytmetycznych lub gdy wymuszona konwersja do liczby się nie uda.
Ćwicz w konsoli przeglądarki krótkie przykłady: konwersje napisów do liczb, użycie operatorów arytmetycznych i sprawdzanie wyniku. Zapamiętaj, że NaN oznacza nieudaną operację liczbową, oraz że nie da się go wykryć przez proste porównanie równości.
info

Statystycznie 64% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Wtedy konwersja do liczby się nie udaje i wynikiem jest NaN."

Źródła:

  • MDN Web Docs: "NaN" (JavaScript) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN (dostęp: 2026-02-27)
  • MDN Web Docs: "isNaN()" — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN (dostęp: 2026-02-27)
  • MDN Web Docs: "Number.isNaN()" — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja MDN: artykuły o NaN, Number.NaN, isNaN oraz Number.isNaN
  • Ćwiczenia w konsoli przeglądarki: testy operacji arytmetycznych na różnych typach
  • Materiały kursowe o typach danych i konwersji typów w JavaScript (podstawy)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego