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 JavaScript

Słowa kluczowe: Dynamiczne typowanie w JavaScript Funkcja isNaN() w JavaScript NaN w JavaScript

Które wyrażenie w języku JavaScript zwróci wartość NaN?

A.
"5" * "2"
Źle. Operator * zamienia napisy z cyframi na liczby, więc wynik to 10.
B.
parseInt("px12")
Dobrze. Napis zaczyna się od liter, więc parseInt nie znajduje na początku żadnej cyfry i zwraca NaN.
C.
parseInt("12px")
Źle. parseInt zbiera cyfry od początku napisu i zatrzymuje się na literze, więc zwraca 12.
D.
Number("")
Źle. Number zamienia pusty napis na 0. NaN dałoby dopiero parseInt("").

parseInt czyta napis od lewej strony i zbiera cyfry tak długo, jak się pojawiają. Jeśli już pierwszy znak nie jest cyfrą (ani znakiem plus lub minus), funkcja nie ma od czego zacząć i zwraca NaN. Napis "px12" zaczyna się od liter, więc parseInt("px12") daje NaN, mimo że cyfry stoją dalej.

Zachowanie to przydaje się przy odczycie wartości z CSS: parseInt("250px") daje 250. Gdy dane pochodzą od użytkownika, wynik zawsze sprawdzaj funkcją isNaN() albo Number.isNaN(), zanim zaczniesz na nim liczyć. Dobrym nawykiem jest też podanie podstawy systemu: parseInt(tekst, 10).

Każde z błędnych wyrażeń zwraca liczbę, choć z różnych powodów. parseInt("12px") zaczyna od cyfr 1 i 2, zatrzymuje się na literze p i zwraca 12. Litery na końcu napisu nie przeszkadzają.

Number("") działa inaczej niż parseInt: ocenia cały napis naraz i pusty napis zamienia na 0. Dla porównania parseInt("") dałoby NaN, a Number("12px") również NaN, bo cały napis musi być liczbą. To częsta pułapka przy pustych polach formularza.

Mnożenie dwóch napisów z cyframi, "5" * "2", daje 10, bo operator * zawsze zamienia oba składniki na liczby. Tylko plus zachowuje się inaczej: "5" + "2" skleja tekst i daje "52".

Gdy wartość NaN trafi do dalszych obliczeń, każdy kolejny wynik też będzie NaN. Dlatego błąd z jednego pola formularza potrafi zepsuć całe podsumowanie, np. sumę zamówienia.

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.