Коротка відповідь
juniorNumber.isFinite — це вбудований метод, що повертає true лише для чисел, які не є Infinity, -Infinity або NaN. Перевірка виконується так: `Number.isFinite(value)`.
Повне пояснення
Що це і навіщо
Number.isFinite() – глобальна функція JavaScript, яка визначає, чи передане значення є конкретним числом (не Infinity, -Infinity, NaN). Використовується для валідації даних, що надходять з користувача або зовнішніх API.
Ключові принципи
- Працює лише з типом number; інші типи автоматично повертають
false. - Не конвертує значення (на відміну від глобального
isFinite). - Враховує тільки конкретні числа, тому
Number.isFinite('10')→false.
Як це працює
Функція перевіряє три умови:
- Значення є типом number.
- Не дорівнює
Infinityабо-Infinity. - Не дорівнює
NaN(черезNumber.isNaN). Якщо всі три виконані, повертаєтьсяtrue.
Практика і реалізація
// Приклад перевірки
const values = [42, Infinity, -Infinity, NaN, '10', 0];
values.forEach(v => console.log(Number.isFinite(v)));
Вивід: true false false false false true.
Тестування
import { describe, it, expect } from 'vitest';
describe('Number.isFinite', () => {
it('should return true for finite numbers', () => {
expect(Number.isFinite(123)).toBe(true);
});
it('should return false for Infinity', () => {
expect(Number.isFinite(Infinity)).toBe(false);
});
});
Дизайн‑рішення
У випадках, коли потрібна валідація даних з форми або API, Number.isFinite слід комбінувати з перевіркою типу (typeof value === 'number'). Якщо потрібно приймати рядки, що представляють числа, спочатку перетворюйте їх через Number(value) і потім застосовуйте Number.isFinite.
Безпека та приватність
Перевірка допомагає запобігти некоректним або шкідливим даним у бізнес‑логіці, зменшуючи ризик помилок типу overflow чи розрахункових помилок.
Альтернативи
isFinite(value)– глобальна функція, яка конвертує значення до числа; менш безпечна.Number.isNaN()+ перевірка на Infinity для ручної реалізації.
Часті помилки
- Використання
isFiniteзамістьNumber.isFinite. - Не перевіряти тип перед викликом.
- Очікувати, що рядок
'10'буде валідним. - Забувати про
NaN, який також не є скінченним. - Перетворювати значення до числа безпосередньо в логіці.
- Не враховувати
-0(але це все одно скінчне). - Використовувати
Number.isFinite()у колбеках, що повертають об’єкти. - Застосовувати до великих масивів без оптимізації.
Cheatsheet
| Функція | Повертає | Приклад |
|---|---|---|
Number.isFinite(x) | true/false | Number.isFinite(5) → true |
isFinite(x) | true/false | isFinite('5') → true (не бажано) |