Sobes.tech
Junior

Kā pārbaudīt, vai skaitlis ir NaN?

sobes.tech AI

Atbilde no AI

Funkcija isNaN(), kas pārbauda, vai vērtība ir "Nav skaitlis" (Not-a-Number).

// Piemēri, izmantojot isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, jo 'hello' nevar pārvērst skaitlī
console.log(isNaN('123'));    // false, jo '123' var pārvērst skaitlī 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, jo null tiek pārvērsts par 0

// Tipa pārvēršanas pārbaude
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Ir arī metode Number.isNaN(), kas stingrāk pārbauda tieši NaN vērtību, neizpildot iepriekšēju pārvēršanu.

// Piemēri, izmantojot Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, neveic pārvēršanu
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Atšķirība no isNaN() ar ne skaitļu argumentiem
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

NaN salīdzināšana ar pašu un jebkuru citu vērtību vienmēr atgriež false, izņemot Object.is() izmantošanu.

// NaN salīdzināšanas īpatnība
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Salīdzināšana ar Object.is()
console.log(Object.is(NaN, NaN)); // true

Atkarībā no uzdevuma, var būt nepieciešams izmantot isNaN() (ja svarīga ir pārbaude pēc pārvēršanas skaitlī) vai Number.isNaN() (precīzai pārbaudei, vai vērtība ir tieši NaN). Number.isNaN() ir vēlams, lai precīzi pārbaudītu, vai konkrētā vērtība ir tieši NaN.