Função isFinite
A função isFinite é usada para verificar se um parâmetro
é um número finito (ou seja,
não é uma string, array, etc. e nem infinito positivo
ou negativo).
Como esta função funciona: ela retornará false,
se o número for infinito positivo ou negativo
(ou seja, Infinity)
ou não for um número (ou seja, NaN),
em todos os outros casos retornará true.
Ou seja, strings, arrays, etc. serão convertidos
para NaN e, consequentemente, retornarão false.
No entanto, existem exceções: uma string vazia
'' retorna true, uma string com espaços ' '
também retorna true, null
retorna true, para os valores true e false
também retorna true.
Isso acontece porque esses valores
são convertidos em números, e não em NaN.
Se você precisa de uma verificação realmente precisa
para número, que não considere uma string
de espaços, valores booleanos e valores especiais
como número - use a seguinte função isNumeric:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
Vamos entender como ela funciona.
A função isFinite converte o parâmetro
para número e retorna true, se não for Infinity,
-Infinity ou NaN.
Assim, a parte direita eliminará
os não-números óbvios, mas deixará valores
como true, false, null, string vazia '' e
string com espaços, pois eles são convertidos corretamente
em números.
Para eliminar esses valores, é necessária a função
parseFloat,
que para true, false, null, '', ' '
retornará NaN. É assim que a função parseFloat funciona: ela
converte o parâmetro para string, ou seja, true,
false, null tornam-se 'true', 'false',
'null', e então lê um número dela,
sendo que a string vazia e a string com espaços
resultam em NaN. Em seguida, o resultado de parseFloat é processado
usando !isNaN,
para obter true ou false em vez de NaN.
Como resultado, tudo é eliminado, exceto strings que são números
e números normais.
Sintaxe
isFinite(valor);
Exemplo
Agora isFinite exibirá true,
pois o parâmetro é um número:
let num = 3;
console.log(isFinite(num));
Resultado da execução do código:
true
Exemplo
Agora isFinite exibirá false,
pois o parâmetro não é um número:
let num = 'abcde';
console.log(isFinite(num));
Resultado da execução do código:
false
Exemplo
Agora isFinite exibirá false,
pois o parâmetro é infinito:
let num = Infinity;
console.log(isFinite(num));
Resultado da execução do código:
false
Exemplo
Agora isFinite exibirá false,
pois 1/0 é basicamente Infinity
(infinito):
let num = 1 / 0;
console.log(isFinite(num));
Resultado da execução do código:
false
Exemplo
Agora isFinite exibirá true,
pois a string vazia, que não é um número,
é uma exceção:
let num = '';
console.log(isFinite(num));
Resultado da execução do código:
true