Funkcija isFinite
Funkcija isFinite naudojama parametrui patikrinti,
ar jis yra baigtinis skaičius (t.y.
ne eilutė, masivas ir pan., ir ne plius
arba minus begalybė).
Kaip ši funkcija veikia: ji grąžins false,
jei skaičius yra plius arba minus begalybė
(t.y. Infinity)
arba ne skaičius (t.y. NaN),
kitais atvejais grąžins true.
Tai yra, eilutės, masyvai ir pan. bus paversti
NaN ir atitinkamai grąžins false.
Tačiau yra išimčių: tuščia eilutė
'' grąžina true, eilutė su tarpais ' '
taip pat grąžina true, null
grąžina true, reikšmėms true ir false
taip pat grąžinama true.
Taip nutinka todėl, kad šios reikšmės
konvertuojamos į skaičius, o ne į NaN.
Jei jums reikia tikslaus skaičiaus patikrinimo,
kuris nepripažįsta skaičiumi eilutę
iš tarpų, loginės ir specialiąsias reikšmes
- naudokite šią funkciją isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Išsiaiškinkime, kaip ji veikia.
Funkcija isFinite konvertuoja parametrą
į skaičių ir grąžina true, jei tai ne Infinity,
-Infinity ar NaN.
Taigi, dešinioji dalis atmes akivaizdžius
neskaičius, bet paliks tokias reikšmes
kaip true, false, null, tuščią eilutę '' ir
eilutę su tarpais, nes jos konvertuojamos
į skaičius korektiškai.
Norint atsijoti šias reikšmes, reikia funkcijos
parseFloat,
kuri true, false, null, '', ' '
grąžins NaN. Taip veikia funkcija parseFloat: ji
konvertuoja parametrą į eilutę, t.y. true,
false, null tampa 'true', 'false',
'null', o tada nuskaito iš jos skaičių,
o tuščia eilutė ir eilutė su tarpais
duoda NaN. Tada parseFloat rezultatas apdorojamas
naudojant !isNaN,
kad gautumėte true arba false vietoj NaN.
Rezultate atsijojama viskas, išskyrus skaičių eilutes
ir paprastus skaičius.
Sintaksė
isFinite(reikšmė);
Pavyzdys
Dabar isFinite išves true,
kadangi parametras yra skaičius:
let num = 3;
console.log(isFinite(num));
Kodo vykdymo rezultatas:
true
Pavyzdys
Dabar isFinite išves false,
kadangi parametras nėra skaičius:
let num = 'abcde';
console.log(isFinite(num));
Kodo vykdymo rezultatas:
false
Pavyzdys
Dabar isFinite išves false,
kadangi parametras yra begalybė:
let num = Infinity;
console.log(isFinite(num));
Kodo vykdymo rezultatas:
false
Pavyzdys
Dabar isFinite išves false,
kadangi 1/0 - tai iš esmės Infinity
(begalybė):
let num = 1 / 0;
console.log(isFinite(num));
Kodo vykdymo rezultatas:
false
Pavyzdys
Dabar isFinite išves true,
kadangi tuščia eilutė, nors ir nėra skaičius,
- yra išimtis:
let num = '';
console.log(isFinite(num));
Kodo vykdymo rezultatas:
true