NaN oznacza Not-a-Number, czyli „nie jest liczbą”. W JavaScript taka wartość pojawia się wtedy, gdy wynik operacji powinien być liczbowy, ale nie da się go poprawnie obliczyć jako liczby.
Kiedy powstaje NaN?
Najczęstsze sytuacje:
- wykonanie działania arytmetycznego na tekście, którego nie da się zamienić na liczbę,
- nieudana konwersja napisu na liczbę,
- niepoprawne działania matematyczne.
Przykłady:
let a = "tekst";
let wynik = a * 5;
console.log(wynik); // NaN
console.log(parseInt("abc")); // NaN
console.log(Math.sqrt(-1)); // NaN
W pytaniach egzaminacyjnych ważne jest rozróżnienie: jeśli napis zawiera poprawną liczbę, JavaScript często wykona konwersję automatycznie.
console.log("10" * 2); // 20
console.log("10" - 2); // 8
console.log("abc" - 2); // NaN
Uwaga na operator +
Operator + może oznaczać dodawanie albo konkatenację, czyli łączenie napisów:
console.log("10" + 2); // "102"
Dlatego + z napisem nie zawsze daje NaN; często tworzy nowy napis.
Jak sprawdzić NaN?
Do sprawdzania wartości NaN można użyć funkcji Number.isNaN():
let x = "abc" * 3;
console.log(Number.isNaN(x)); // true
Nie należy porównywać NaN przez == ani ===, ponieważ NaN nie jest równe nawet samemu sobie:
console.log(NaN === NaN); // false
Znaczenie egzaminacyjne
Jeżeli skrypt wykonuje operację arytmetyczną na zmiennej będącej napisem, którego nie można zinterpretować jako liczby, wynikiem może być NaN.