Sobes.tech
Junior

Jak sprawdzić, czy liczba jest NaN?

sobes.tech AI

Odpowiedź od AI

Używają funkcji isNaN(), która sprawdza, czy wartość jest "Nie liczbą" (Not-a-Number).

// Przykłady użycia isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, ponieważ 'hello' nie może zostać zamienione na liczbę
console.log(isNaN('123'));    // false, ponieważ '123' może zostać zamienione na liczbę 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, ponieważ null jest konwertowane na 0

// Sprawdzanie konwersji typów w isNaN()
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Istnieje również metoda Number.isNaN(), która bardziej rygorystycznie sprawdza, czy wartość jest dokładnie NaN, bez wcześniejszej konwersji.

// Przykłady użycia Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, nie konwertuje do liczby
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Różnice w porównaniu do isNaN() przy argumentach niebędących liczbami
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

Porównanie NaN z samym sobą lub inną wartością zawsze zwraca false, z wyjątkiem użycia Object.is().

// Charakterystyka porównania z NaN
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Porównanie za pomocą Object.is()
console.log(Object.is(NaN, NaN)); // true

W zależności od zadania, może być konieczne użycie isNaN() (jeśli ważne jest sprawdzenie po konwersji do liczby) lub Number.isNaN() (dla ścisłej kontroli na NaN). Metoda Number.isNaN() jest preferowana do dokładnego sprawdzania, czy dana wartość jest dokładnie NaN.