NaN w JavaScript

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

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.