Number.isFinite()
Number.isFinite(value) Returns:
Boolean · Updated March 13, 2026 · Number javascript number finite type-check
The Number.isFinite() method determines whether the passed value is a finite number. In JavaScript, finite numbers are all values that are not Infinity, -Infinity, or NaN. This method is part of the ES6 specification and provides a more reliable way to check for finite numbers compared to the global isFinite() function.
Syntax
Number.isFinite(value)
Parameters
| Parameter | Type | Description |
|---|---|---|
value | any | The value to check for finiteness |
Return Value
Returns true if the value is a finite number (a regular number that is not Infinity, -Infinity, or NaN). Returns false for all non-finite numbers and non-number types.
Examples
Basic Usage
Number.isFinite(42); // true
Number.isFinite(3.14159); // true
Number.isFinite(-10); // true
Number.isFinite(0); // true
Non-Finite Numbers
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite(NaN); // false
Edge Cases: Non-Number Types
One of the key differences between Number.isFinite() and the global isFinite() is how it handles non-number types:
// These all return false - they are not finite numbers
Number.isFinite('42'); // false (string)
Number.isFinite('hello'); // false (string)
Number.isFinite(undefined); // false
Number.isFinite(null); // false
Number.isFinite(true); // false (boolean)
Number.isFinite({}); // false (object)
Number.isFinite([]); // false (array)
Common Patterns
Input Validation
When validating user input that should be a finite number:
function processValue(input) {
if (!Number.isFinite(input)) {
return 'Invalid: not a finite number';
}
return input * 2;
}
processValue(10); // 20
processValue(Infinity); // 'Invalid: not a finite number'
processValue('hello'); // 'Invalid: not a finite number'
Preventing Division by Zero Issues
function calculateRate(total, count) {
if (!Number.isFinite(total) || !Number.isFinite(count)) {
return NaN;
}
if (count === 0) {
return Infinity;
}
return total / count;
}
calculateRate(100, 0); // Infinity
calculateRate(100, 4); // 25
calculateRate(NaN, 4); // NaN
Difference from Global isFinite()
The global isFinite() coerces its argument to a number before checking:
// Global isFinite() coerces values
isFinite('42'); // true (coerced to 42)
isFinite('hello'); // false (coerced to NaN)
Number.isFinite('42'); // false (no coercion, string is not a number)
// The key difference is with null and empty strings
isFinite(null); // true (null becomes 0)
Number.isFinite(null); // false
isFinite(''); // true (empty string becomes 0)
Number.isFinite(''); // false
Data Processing Pipeline
const values = [10, 20, Infinity, 30, NaN, 40, -Infinity, 50];
const finiteValues = values.filter(Number.isFinite);
// [10, 20, 30, 40, 50]
const sum = finiteValues.reduce((a, b) => a + b, 0);
// 150
See Also
- Number.isNaN() — check if value is NaN
- Number.isInteger() — check if value is an integer