Pergunta

se eu quiser testar o resultado de uma expressão ea função retornaria NaN Como eu poderia verificar isso?
exemplos:
$('amount').value.toInt()!='NaN'
^ não funciona e eu supor que o valor retornado não é uma string,
$('amount').value.toInt()!=NaN
^ does not parece que quer trabalhar e este parece óbvio

assim como faço para verificar wether o valor retornado não é um número?

Foi útil?

Solução

O valor NaN é definida para ser desigual a tudo, incluindo o próprio. Teste se um valor for NaN com a isNaN() função, adequadamente suficiente. (ECMAScript 6 acrescenta um Number.isNan() função com diferentes semântica para argumentos não-numéricas, mas não é suportado em todos os navegadores ainda a partir de 2015).

Há dois alto-propriedades disponíveis com um valor NaN: o global, NaN propriedade (ou seja window.NaN em navegadores), e Number.NaN . É não a palavra-chave da linguagem. Em navegadores mais antigos, a propriedade NaN poderia ser substituído, com potencialmente confundindo resultados, mas com o ECMAScript 5 padrão que foi feito não-gravável .

  • Como @some apontou nos comentários, há também a função global isFinite () "noreferrer nofollow", que pode ser útil.

Outras dicas

a melhor maneira de verificar o resultado da operação numérica contra NaN é aproach desta forma, exemplo:

var x  = 0;
var y  = 0;
var result = x/y;  // we know that result will be NaN value
// to test if result holds a NaN value we should use the following code :

if(result !=result){
console.log('this is an NaN value');
} 

e ele é feito.

O truque é que NaN não pode ser comparado a qualquer outro valor, mesmo com auto (NaN! = NaN sempre é verdade para que possamos tirar proveito disso e comparar resultado contra si)

isso é JavaScript (um bom e linguagem bizarra)

operador de igualdade (== === e) não pode ser utilizado para testar um valor contra NaN. Use Number.isNaN () ou isNaN () em vez.

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top