Sobes.tech
Junior

როგორ შემოწმოთ, არის თუ არა რიცხვი NaN?

sobes.tech AI

პასუხი AI-სგან

ფუნქცია isNaN(), რომელიც ამოწმებს, არის თუ არა მნიშვნელობა "არ არის რიცხვი" (Not-a-Number).

// გამოყენების მაგალითები isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, რადგან 'hello' ვერ გარდაიქმნება რიცხვად
console.log(isNaN('123'));    // false, რადგან '123' შეიძლება გარდაიქმნას რიცხვად 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, რადგან null გარდაიქმნება 0-ს

// ტიპის გარდაქმნის შემოწმება isNaN()
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

ასევე არსებობს მეთოდი Number.isNaN(), რომელიც უფრო მკაცრად ამოწმებს კონკრეტულად NaN-ს, არ აკეთებს წინასწარ გარდაქმნას.

// გამოყენების მაგალითები Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, არ აკეთებს გარდაქმნას
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// განსხვავება isNaN()-თან არამატრიცულ არგუმენტებთან
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

NaN-სთან შედარება თავად და სხვა მნიშვნელობებთან ყოველთვის აბრუნებს false, გარდა Object.is()-ის გამოყენებისას.

// NaN-ის შედარების თავისებურება
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// შედარება Object.is()-ის გამოყენებით
console.log(Object.is(NaN, NaN)); // true

შესაბამისად, საჭიროების მიხედვით, შეიძლება გამოიყენოთ isNaN() (თუ მნიშვნელოვანია გარდაქმნის შემოწმება) ან Number.isNaN() (თუ სუფთა და ზუსტი შემოწმება გსურთ). Number.isNaN() უკეთესია კონკრეტულად NaN-ის შემოწმებისთვის.