Sobes.tech
Junior

Kaip patikrinti, ar skaičius yra NaN?

sobes.tech AI

Atsakymas iš AI

Funkcija isNaN(), kuri tikrina, ar reikšmė yra "Ne skaičius" (Not-a-Number).

// Pavyzdžiai naudojant isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, nes 'hello' negali būti paverstas skaičiumi
console.log(isNaN('123'));    // false, nes '123' gali būti paverstas skaičiumi 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, nes null paverčiamas į 0

// Tipų konvertavimo patikrinimas
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Taip pat yra metodas Number.isNaN(), kuris griežčiau tikrina būtent NaN reikšmę, neįtraukiant išankstinio konvertavimo.

// Pavyzdžiai naudojant Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, nes neįvykdo konvertavimo
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Skirtumas nuo isNaN() su ne skaičiaus argumentais
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

NaN lyginimas su pačiu savimi ar bet kokia kita reikšme visada grąžina false, išskyrus naudojant Object.is().

// NaN palyginimo ypatybė
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Palyginimas naudojant Object.is()
console.log(Object.is(NaN, NaN)); // true

Priklausomai nuo užduoties, gali būti reikalinga naudoti isNaN() (jei svarbu patikrinti po konvertavimo į skaičių) arba Number.isNaN() (griežtesnė patikra, ar reikšmė būtent NaN). Number.isNaN() yra pageidautina tiksliam patikrinimui, ar konkretus reikšmė yra būtent NaN.