Funktsioon isFinite
Funktsioon isFinite parameetri kontrollimiseks,
et see on lõplik arv (st
mitte string, massiiv jne ja mitte pluss
või miinus lõpmatus).
Kuidas see funktsioon töötab: see tagastab false,
kui arv on pluss või miinus lõpmatus
(st Infinity)
või mitte arv (st NaN),
muudel juhtudel tagastab true.
St stringid, massiivid jne teisendatakse
NaN-ks ja seetõttu tagastavad false.
Kuid on olemas erandid: tühi string
'' tagastab true, tühikutega string ' '
samuti tagastab true, null
tagastab true, väärtuste true ja false
korral tagastatakse samuti true.
See juhtub seetõttu, et need väärtused
teisendatakse arvudeks, mitte NaN-ks.
Kui vajate tõeliselt täpset arvu kontrolli,
mis ei pea tühikutest stringi,
loogilisi ega spetsiaalseid väärtusi
arvuks - kasutage järgmist funktsiooni isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Vaatame, kuidas see töötab.
Funktsioon isFinite teisendab parameetri
arvuks ja tagastab true, kui see ei ole Infinity,
-Infinity ega NaN.
Seega parem pool filtreerib välja ilmselgelt
mittearvud, kuid jätab alles sellised väärtused
nagu true, false, null, tühi string '' ja
tühikutega string, sest need teisendatakse korrektselt
arvudeks.
Nende väärtuste väljafiltreerimiseks on vaja funktsiooni
parseFloat,
mis true, false, null, '', ' '
korral tagastab NaN. Funktsioon parseFloat töötab nii: see
teisendab parameetri stringiks, st true,
false, null muutuvad 'true', 'false',
'null'-ks ja seejärel loeb sealt arvu,
kusjuures tühi string ja tühikutega string
annavad NaN. Seejärel parseFloat tulemust töödeldakse
kasutades !isNaN-i,
et saada true või false NaN asemel.
Tulemusena filtreeritakse kõik välja, välja arvatud arv-stringid
ja tavalised arvud.
Süntaks
isFinite(väärtus);
Näide
Nüüd isFinite väljastab true,
kuna parameeter on arv:
let num = 3;
console.log(isFinite(num));
Koodi täitmise tulemus:
true
Näide
Nüüd isFinite väljastab false,
kuna parameeter ei ole arv:
let num = 'abcde';
console.log(isFinite(num));
Koodi täitmise tulemus:
false
Näide
Nüüd isFinite väljastab false,
kuna parameeter on lõpmatus:
let num = Infinity;
console.log(isFinite(num));
Koodi täitmise tulemus:
false
Näide
Nüüd isFinite väljastab false,
kuna 1/0 on sisuliselt Infinity
(lõpmatus):
let num = 1 / 0;
console.log(isFinite(num));
Koodi täitmise tulemus:
false
Näide
Nüüd isFinite väljastab true,
kuna tühi string, mis ei ole arv,
- on erand:
let num = '';
console.log(isFinite(num));
Koodi täitmise tulemus:
true