Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

isNaN()

Resumo

  A função insNAN () determina se o valor é NaN ou não. Tenha cuidado, essa função é quebrada. Você pode ficar interessado no Number.isNaN() que foi definido no ECMAScript 6 ou você pode usar typeof para determinar se o valor é Not-A-Number, NaN.

Syntax

isNaN(testValue)

Parâmetros

testValue
O valor a ser testado.

Descrição

A necessidade da função isNaN

Ao contrário de todas as outras possibilidades de valores no JavaScript, não é possivel confiar nos operadores de igualdade (== e ===) para determina se o valor é NaN ou não, porque ambos, NaN == NaN e NaN === NaN, terá como valor de retorno: false. Daí a necessidade da funçao isNAN.

Origem dos valores NaN

Os valores NaN são gerados quando operações aritiméticas tem como valores: undefined ou unrepresentable. Como valores, não fazem necessariamente condições de estouro. NaN também resulta da tentativa de coerção para valores numéricos, de valores não numéricos, para que o valor numérico primitivo seja disponível.

Por exemplo, divida zero por zero e o resultado será NaN , mas se dividir outros números por zero ele não será.

Comportamento confuso do caso especial

Desde as primeiras versões da especificação da função isNaN , o seu comportamento para argumentos não numéricos tem sido confuso. Quando o argumento para a função isNaN não é do tipo Number, o valor é primeiro convertido para um número. O valor resultante é em seguida testada para determinar se se trata de { { jsxref ("Global_Objects / NaN " , " NaN " ) } } . Assim, para os não- números que quando forçado ao tipo numérico resultado em um valor numérico não- NaN válido (nomeadamente a cadeia vazia e primitivas booleanos , que quando forçada a dar valores numéricos zero ou um ), o "falso" valor retornado pode ser inesperado ; a cadeia vazia , por exemplo, é certamente " não é um número . " A confusão decorre do fato de que o termo , " não é um número " , tem um significado específico para os números representados como valores de ponto flutuante IEEE- 794 . A função deve ser interpretada como responder à pergunta: "é este valor, quando convertido para um valor numérico, um valor IEEE -794 ' não um número "?

A próxima versão do ECMAScript (ES6) contém A função Number.isNaN(). Number.isNaN(x) Será a real forma para testar se x é NaN ou não. Mesmo com Number.isNaN, porém, o significado de NaN continua ser a precisão numérica, e não simplesmente, "não é um número = NaN, not a number". Paralelamente , na expressão Number.isNaN, a expressão (x != x) é a forma mais confiável para testar se a variável x é NaN ou não, assim o resultado não é sujeitado ao falso positivo que faz isNaN não ser confiável.

Exemplos

isNaN(NaN);       // true
isNaN(undefined); // true
isNaN({});        // true

isNaN(true);      // false
isNaN(null);      // false
isNaN(37);        // false

// strings
isNaN("37");      // false: "37" is converted to the number 37 which is not NaN
isNaN("37.37");   // false: "37.37" is converted to the number 37.37 which is not NaN
isNaN("");        // false: the empty string is converted to 0 which is not NaN
isNaN(" ");       // false: a string with spaces is converted to 0 which is not NaN

// dates
isNaN(new Date());                // false
isNaN(new Date().toString());     // true

// Esse é um falso positivo e é a razão para isNaN não seja totalmente confiável.
isNaN("blabla")   // true: "blabla" é convertido para número. 
                  // A análise desse número falha e retorna NaN como resultado.

Especificações

Especificação Status Comentário
ECMAScript 1ª Edição. Standard Definição inicial.
ECMAScript 5.1 (ECMA-262)
The definition of 'isNaN' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'isNaN' in that specification.
Standard  

Compatibilidade com Browser

Feature    Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suporte básico (Yes) (Yes) (Yes) (Yes) (Yes)
Aplicação Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suporte básico (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Veja também

Etiquetas do documento e colaboradores

Etiquetas: 
 Colaboradores desta página: bartolomeu.gusella, SphinxKnight, teoli, nasviana
 Última atualização por: bartolomeu.gusella,