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.