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:
javascriptfunction 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
javascriptisFinite(valor);
Exemplo
Agora isFinite exibirá true,
pois o parâmetro é um número:
javascriptlet num = 3;
console.log(isFinite(num));
Resultado da execução do código:
javascripttrue
Exemplo
Agora isFinite exibirá false,
pois o parâmetro não é um número:
javascriptlet num = 'abcde';
console.log(isFinite(num));
Resultado da execução do código:
javascriptfalse
Exemplo
Agora isFinite exibirá false,
pois o parâmetro é infinito:
javascriptlet num = Infinity;
console.log(isFinite(num));
Resultado da execução do código:
javascriptfalse
Exemplo
Agora isFinite exibirá false,
pois 1/0 é basicamente Infinity
(infinito):
javascriptlet num = 1 / 0;
console.log(isFinite(num));
Resultado da execução do código:
javascriptfalse
Exemplo
Agora isFinite exibirá true,
pois a string vazia, que não é um número,
é uma exceção:
javascriptlet num = '';
console.log(isFinite(num));
Resultado da execução do código:
javascripttrue