isFinite function
The isFinite function checks if a
parameter is a finite number (that is,
not a string, array, etc., and not
plus or minus infinity).
How this function works: it will return
false if the number is plus or
minus infinity (i.e.
Infinity)
or not a number (i.e.
NaN),
otherwise it will return true. That is,
strings, arrays, etc. will be converted to
NaN and will return false
accordingly.
However, there are exceptions: an
empty string '' returns true, the
string ' '
with spaces also returns true,
null
returns true, for the values true and
false it also returns true.
This is because these values are converted
to numbers and not to NaN. If you
need a really accurate check for a number
that does not count a string of spaces,
booleans and special values as a number
- use the following isNumeric
function:
javascriptfunction isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Let's see how it works. The isFinite
function converts the parameter to a number
and returns true if it is not
Infinity, -Infinity, or
NaN. Thus, the right side will
definitely filter out non-numbers,
but leave such values as true,
false, null, an empty string
'' and a string with spaces, because
they are correctly converted to numbers.
To filter out these values, you need the
parseFloat
function, which for true, false,
null, '', ' '
will return NaN. This is how the
parseFloat function works: it converts
a parameter to a string, i.e. true,
false, null become 'true',
'false', 'null' and then reads
a number from it, with an empty string and a
string with spaces giving NaN. The
result of parseFloat is then processed
with !isNaN
to get true or false instead
of NaN. As a result, everything is
filtered out, except for strings-numbers
and ordinary numbers.
Syntax
javascriptisFinite(value);
Example
Now isFinite will output
true since the parameter
is a number:
javascriptlet num = 3;
console.log(isFinite(num));
The code execution result:
javascripttrue
Example
Now isFinite will output
false since the parameter
is not a number:
javascriptlet num = 'abcde';
console.log(isFinite(num));
The code execution result:
javascriptfalse
Example
Now isFinite will output
false since the parameter
is infinity:
javascriptlet num = Infinity;
console.log(isFinite(num));
The code execution result:
javascriptfalse
Example
Now isFinite will output
false, since 1/0
is essentially Infinity:
javascriptlet num = 1 / 0;
console.log(isFinite(num));
The code execution result:
javascriptfalse
Example
Now isFinite will output
true as an empty string
that is not a number is an
exception:
javascriptlet num = '';
console.log(isFinite(num));
The code execution result:
javascripttrue