Wartość NaN
oznacza not a number, jednakże w JS jest właśnie typu number
console.info(typeof NaN) // number
Powstaje zwykle w wyniku próby konwersji wartości nieliczbowej, na liczbę.
Aby sprawdzić, czy dana zmienna przechowuje NaN
, możliwe jest wykorzystanie dwóch funkcji:
window.isNaN()
przyjmuje jeden argument. Konwertuje go na liczbę, a następnie sprawdza, czy jest równy NaN
. Może prowadzić do nieoczekiwanych rezultatów - niektóre wartości przekształcone na liczbę zachowują się inaczej.
console.info(Number(NaN), isNaN(NaN)); // NaN, true console.info(Number(true), isNaN(true)); // 1, false console.info(Number(false), isNaN(false)); // 0, false console.info(Number("string"), isNaN("string")); // NaN, true console.info(Number({}), isNaN({})); // NaN, true console.info(Number([]), isNaN([])); // 0, false
Funkcja Number.isNaN()
przyjmuje jeden argument i sprawdza, czy jest on równy NaN
. Nie dokonuje konwersji do liczby.
console.info(Number.isNaN(NaN)); // true console.info(Number.isNaN(true)); // false console.info(Number.isNaN(false)); // false console.info(Number.isNaN("string")); // false console.info(Number.isNaN({})); // false console.info(Number.isNaN([])); // false