isFinite функциясы
isFinite функциясы параметрдің шекті сан екенін тексеру үшін
(яғни жол, массив және т.б. емес және плюс
немесе минус шексіздік емес).
Бұл функция қалай жұмыс істейді: егер сан плюс немесе минус шексіздік болса
(яғни Infinity)
немесе сан емес болса (яғни NaN),
false қайтарады,
басқа жағдайларда true қайтарады.
Яғни жолдар, массивтер және т.б. NaN-ке түрлендіріледі
және сәйкесінше false қайтарады.
Алайда ерекшеліктер бар: бос жол
'' true қайтарады, бос орындар жолы ' '
сондай-ақ true қайтарады, null
true қайтарады, true және false мәндері
үшін де true қайтарылады.
Бұл мына себептен болады: бұл мәндер
NaN-ке емес, сандарға түрлендіріледі.
Егер сізге бос орындар жолын, логикалық және арнайы мәндерді
сан ретінде санамайтын шынымен дәл санды тексеру функциясы
қажет болса, мына функцияны isNumeric қолданыңыз:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Оның қалай жұмыс істейтінін анықтайық.
isFinite функциясы параметрді
санға түрлендіреді және егер бұл Infinity,
-Infinity немесе NaN болмаса, true қайтарады.
Осылайша, оң жақ бөлігі анық
сан емес мәндерді електен өткізеді, бірақ
true, false, null, бос жол '' және
бос орындар жолы сияқты мәндерді қалдырады, себебі олар дұрыс түрлендіріледі
сандарға.
Бұл мәндерді електен өткізу үшін
parseFloat функциясы қажет,
ол true, false, null, '', ' '
үшін NaN қайтарады. parseFloat функциясы осылай жұмыс істейді: ол
параметрді жолға түрлендіреді, яғни true,
false, null 'true', 'false',
'null' болады, содан кейін одан санды оқиды,
бұл ретте бос жол және бос орындар жолы
NaN береді. Содан кейін parseFloat нәтижесі
!isNaN көмегімен өңделеді,
NaN орнына true немесе false алу үшін.
Нәтижесінде сан-жолдар мен жай сандардан басқа
барлығы електен өткізіледі.
Синтаксис
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