isFinite функцияси
isFinite функцияси параметрнинг чекли сон эканлигини
(яъни сатр, массив ва хоказо эмаслигини ва у
мусбат ёки манфий чексизлик эмаслигини) текширади.
Бу функция кандай ишлайди: агар сон мусбат ёки манфий чексизлик
(яъни Infinity)
ёки сон эмас (яъни NaN)
булса, false кайтаради,
акс холда true кайтаради.
Яъни сатрлар, массивлар ва хоказо NaN га
aйлантирилади ва шу sababli false кайтаради.
Aммо **истиснолар** мавжуд: буш сатр
'' true кайтаради, бушлиқлар билан сатр ' '
ҳам true кайтаради, null
true кайтаради, true ва false қийматлари учун
ҳам true кайтарилади.
Бу шундан келиб чиқадики, бу қийматлар
NaN га эмас, балки сонларга aйлантирилади.
Aгар сизга бушлиқлар сатрини, мантиқий ва maxсус қийматларни
сон хисоблаган ҳолда эмас, чиндан хам аниқ сон текшириши керак бўлса,
куйидаги isNumeric функциясидан фойдаланинг:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Келинг, унинг кандай ишлашини тушунамиз.
isFinite функцияси параметрни сонга aйлантиради
ва агар у Infinity, -Infinity ёки NaN бўлмаса,
true кайтаради.
Шу тариқа, ўнг томон aniq **но-сон**ларни устунда колиб,
true, false, null, буш сатр '' ва
бушлиқлар билан сатр каби қийматларни қолдиради, чунки улар тўғри
равищда сонларга aйлантирилади.
Бу қийматларни устунда колиш учун parseFloat
функцияси зарур, у true, false, null, '', ' '
учун NaN кайтаради. parseFloat функцияси шундай ишлайди: у
параметрни сатрга aйлантиради, яъни true, false, null
'true', 'false', 'null' га aйланади, сўнгра ундан сонни
ўқийди, бунда буш сатр ва бушлиқлар билан сатрлар
NaN беради. Сўнгра parseFloat натижаси
!isNaN ёрдамида ишлатилади,
NaN ўрнига true ёки false олиш учун.
Натижада сон-сатрлар ва оддий сонлардан ташқари hамма нарса устунда колинади.
Синтаксис
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