ფუნქცია isFinite
ფუნქცია isFinite გამოიყენება პარამეტრის შესამოწმებლად
იმაზე, არის თუ არა ის სასრული რიცხვი (ანუ
არა სტრიქონი, მასივი და ა.შ. და არა პლუს
ან მინუს უსასრულობა).
როგორ მუშაობს ეს ფუნქცია: ის დააბრუნებს false-ს,
თუ რიცხვი არის პლუს ან მინუს უსასრულობა
(ანუ Infinity)
ან არა-რიცხვი (ანუ NaN),
ყველა სხვა შემთხვევაში დააბრუნებს true-ს.
ანუ სტრიქონები, მასივები და ა.შ. გარდაიქმნება
NaN-ად და შესაბამისად დააბრუნებენ false-ს.
თუმცა არსებობს გამონაკლისები: ცარიელი სტრიქონი
'' აბრუნებს true-ს, სტრიქონი სფეისებით ' '
ასევე აბრუნებს true-ს, null
აბრუნებს true-ს, მნიშვნელობებისთვის true და false
ასევე ბრუნდება true.
ეს ხდება იმიტომ, რომ ეს მნიშვნელობები
გარდაიქმნება რიცხვებად და არა NaN-ად.
თუ თქვენ გჭირდებათ ნამდვილად ზუსტი შემოწმება
რიცხვზე, რომელიც არ თვლის რიცხვად სტრიქონს
სფეისებით, ლოგიკურ და სპეციალურ მნიშვნელობებს
- გამოიყენეთ შემდეგი ფუნქცია isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
მოდით გავარკვიოთ, როგორ მუშაობს ის.
ფუნქცია isFinite გარდაქმნის პარამეტრს
რიცხვად და აბრუნებს true-ს, თუ ეს არ არის Infinity,
-Infinity ან NaN.
ამრიგად, მარჯვენა ნაწილი გამორიცხავს აშკარად
არარიცხვით მნიშვნელობებს, მაგრამ დატოვებს ისეთ მნიშვნელობებს,
როგორიცაა true, false, null, ცარიელი სტრიქონი '' და
სტრიქონი სფეისებით, რადგან ისინი კორექტულად გარდაიქმნებიან
რიცხვებად.
ამ მნიშვნელობების გამოსარიცხად, საჭიროა ფუნქცია
parseFloat,
რომელიც true-სთვის, false-ისთვის, null-ისთვის, ''-ისთვის, ' '-ისთვის
დააბრუნებს NaN-ს. ასე მუშაობს ფუნქცია parseFloat: ის
გარდაქმნის პარამეტრს სტრიქონად, ანუ true,
false, null ხდება 'true', 'false',
'null', შემდეგ კი კითხულობს მისგან რიცხვს,
ამ შემთხვევაში ცარიელი სტრიქონი და სტრიქონი სფეისებით
აძლევს NaN-ს. შემდეგ parseFloat-ის შედეგი დამუშავებულია
!isNaN-ის გამოყენებით,
რომ მიიღოთ true ან false NaN-ის ნაცვლად.
შედეგად გამოირიცხება ყველაფერი, გარდა რიცხვ-სტრიქონებისა
და ჩვეულებრივი რიცხვებისა.
სინტაქსი
isFinite(მნიშვნელობა);
მაგალითი
ახლა isFinite გამოიტანს true-ს,
რადგან პარამეტრი არის რიცხვი:
let num = 3;
console.log(isFinite(num));
კოდის შესრულების შედეგი:
true
მაგალითი
ახლა isFinite გამოიტანს false-ს,
რადგან პარამეტრი არ არის რიცხვი:
let num = 'abcde';
console.log(isFinite(num));
კოდის შესრულების შედეგი:
false
მაგალითი
ახლა isFinite გამოიტანს false-ს,
რადგან პარამეტრი არის უსასრულობა:
let num = Infinity;
console.log(isFinite(num));
კოდის შესრულების შედეგი:
false
მაგალითი
ახლა isFinite გამოიტანს false-ს,
რადგან 1/0 - ეს არსებითად Infinity-ა
(უსასრულობა):
let num = 1 / 0;
console.log(isFinite(num));
კოდის შესრულების შედეგი:
false
მაგალითი
ახლა isFinite გამოიტანს true-ს,
რადგან ცარიელი სტრიქონი, რომელიც არ არის რიცხვი,
- ეს გამონაკლისია:
let num = '';
console.log(isFinite(num));
კოდის შესრულების შედეგი:
true