Функцыя 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