Sobes.tech
Junior

Kuidas kontrollida, kas number on NaN?

sobes.tech AI

Vastus AI-lt

Funktsioon isNaN(), mis kontrollib, kas väärtus on "Mitte arv" (Not-a-Number).

// Näited isNaN() kasutamisest
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, kuna 'hello' ei saa arvuks muuta
console.log(isNaN('123'));    // false, kuna '123' saab arvuks 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, kuna null muudetakse 0-ks

// Tüüpide konverteerimise kontroll
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Samuti on olemas meetod Number.isNaN(), mis kontrollib rangemalt just NaN väärtust, ilma eelneva konversioonita.

// Näited Number.isNaN() kasutamisest
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, ei tee konversiooni
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Erinevus isNaN()-st mittesõbralike argumentide puhul
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

NaN võrdlemine iseenda või teiste väärtustega alati tagastab false, välja arvatud kasutades Object.is().

// NaN võrdlemise eripära
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Võrdlemine Object.is() abil
console.log(Object.is(NaN, NaN)); // true

Sõltuvalt ülesandest võib olla vajalik kasutada isNaN() (kui oluline on kontroll pärast konversiooni arvuks) või Number.isNaN() (täpseks kontrolliks, kas väärtus on just NaN). Number.isNaN() on eelistatud, kuna see kontrollib täpselt, kas väärtus on NaN.