Функција isFinite
Функција isFinite служи за проверу параметра
да ли је коначан број (тј.
није ниска, низ и сл. и није плус
или минус бесконачност).
Како функционише: вратиће false,
ако је број плус или минус бесконачност
(тј. Infinity)
или није број (тј. NaN),
у осталим случајевима враћа true.
Тј. ниске, низови и сл. биће претворени
у NaN и стога ће вратити false.
Међутим, постоје изузеци: празна ниска
'' враћа true, ниска са размацима ' '
такође враћа true, null
враћа true, за вредности true и false
такође се враћа true.
То се дешава зато што се ове вредности
претварају у бројеве, а не у NaN.
Ако вам је потребна заиста прецизна провера
да ли је нешто број, која не сматра бројем ниску
са размацима, логичке и специјалне вредности
- користите следећу функцију isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Хајде да разумемо како она ради.
Функција isFinite претвара параметар
у број и враћа true, ако то није Infinity,
-Infinity или NaN.
Тако да ће десни део одбацити очигледне
не-бројеве, али ће оставити вредности
попут true, false, null, празну ниску '' и
ниску са размацима, јер се оне коректно претварају
у бројеве.
Да би се одбациле ове вредности, потребна је функција
parseFloat,
која ће за true, false, null, '', ' '
вратити NaN. Тако функционише parseFloat: она
претвара параметар у ниску, тј. true,
false, null постају 'true', 'false',
'null', а затим чита број из ње,
при чему празна ниска и ниска са размацима
дају NaN. Затим се резултат parseFloat обрађује
помоћу !isNaN,
да би се добило true или false уместо NaN.
Као резултат, одбацује се све, осим ниски-бројева
и обичних бројева.
Синтакса
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