23 of 264 menu

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

Veja também

  • a função isNaN,
    que realiza a verificação para NaN
  • o operador typeof,
    que determina o tipo de dados
ithuswkknl