qual é a palavra-chave reservada para NaN em javascript?
-
05-09-2019 - |
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?
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