isFinite funksiyası
isFinite funksiyası parametrin sonlu ədəd olub-olmadığını
(yəni sətir, massiv və s. olmamasını və ya müsbət/mənfi sonsuzluq
olmamasını) yoxlamaq üçün istifadə olunur.
Bu funksiya necə işləyir: əgər ədəd müsbət və ya mənfi sonsuzluqdursa
(yəni Infinity)
ya da ədəd deyilsə (yəni NaN),
false qaytarır, digər bütün hallarda isə true qaytarır.
Yəni sətirlər, massivlər və s. NaN-ə çevriləcək və müvafiq olaraq
false qaytaracaq.
Lakin istisnalar var: boş sətir
'' true qaytarır, boşluqlardan ibarət sətir ' '
da true qaytarır, null
true qaytarır, true və false qiymətləri üçün də
true qaytarılır.
Bu ona görə baş verir ki, bu qiymətlər
NaN-ə deyil, ədədlərə çevrilir.
Əgər sizə həqiqətən dəqiq ədəd yoxlaması lazımdırsa,
boşluqlardan ibarət sətiri, məntiqi və xüsusi qiymətləri
ədəd saymayan - aşağıdakı isNumeric funksiyasından istifadə edin:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Gəlin onun necə işlədiyini anlayaq.
isFinite funksiyası parametri
ədədə çevirir və əgər o Infinity,
-Infinity və ya NaN deyilsə, true qaytarır.
Beləliklə, sağ tərəf aşkar ədəd olmayanları ələyəcək,
amma true, false, null, boş sətir '' və
boşluqlardan ibarət sətir kimi qiymətləri buraxacaq, çünki onlar
düzgün şəkildə ədədlərə çevrilir.
Bu qiymətləri ələmək üçün parseFloat
funksiyasına ehtiyac var,
hansı ki, true, false, null, '', ' '
üçün NaN qaytarır. parseFloat funksiyası belə işləyir: o,
parametri sətirə çevirir, yəni true,
false, null 'true', 'false',
'null' olur, sonra isə ondan ədədi oxuyur,
bu zaman boş sətir və boşluqlardan ibarət sətir
NaN verir. Sonra parseFloat-ın nəticəsi
!isNaN ilə
emal olunur, NaN əvəzinə true və ya false almaq üçün.
Nəticədə, ədəd-sətirlər və adi ədədlər istisna olmaqla, hər şey ələnir.
Sintaksis
isFinite(qiymet);
Nümunə
İndi isFinite true göstərəcək,
çünki parametr ədəddir:
let num = 3;
console.log(isFinite(num));
Kodun icrasının nəticəsi:
true
Nümunə
İndi isFinite false göstərəcək,
çünki parametr ədəd deyil:
let num = 'abcde';
console.log(isFinite(num));
Kodun icrasının nəticəsi:
false
Nümunə
İndi isFinite false göstərəcək,
çünki parametr sonsuzluqdur:
let num = Infinity;
console.log(isFinite(num));
Kodun icrasının nəticəsi:
false
Nümunə
İndi isFinite false göstərəcək,
çünki 1/0 - əslində Infinity-dir
(sonsuzluq):
let num = 1 / 0;
console.log(isFinite(num));
Kodun icrasının nəticəsi:
false
Nümunə
İndi isFinite true göstərəcək,
çünki ədəd olmayan boş sətir
- istisnadır:
let num = '';
console.log(isFinite(num));
Kodun icrasının nəticəsi:
true