Domanda

se voglio testare il risultato di un'espressione e la funzione sarebbe tornato NaN come potrei controllare che?
esempi:
$('amount').value.toInt()!='NaN'
^ non funziona e presumo che il valore restituito non è una stringa,
$('amount').value.toInt()!=NaN
^ doesnt sembrano funzionare sia e questo sembra ovvio

così come faccio verificato se il valore restituito non è un numero?

È stato utile?

Soluzione

Il valore NaN è definito per essere diverso da tutto, compreso se stesso. Verificare se un valore è NaN con la isNaN() funzione, in modo abbastanza appropriato. (ECMAScript 6 aggiunge un Number.isNan() funzione con differenti semantica per argomenti non-numero, ma non è supportata in tutti i browser ma a partire dal 2015).

Ci sono due proprietà predefinite disponibili con un valore NaN: il globale proprietà NaN (cioè window.NaN nei browser), e Number.NaN . Si tratta di non una parola chiave lingua. In browser più vecchi, la proprietà NaN potrebbe essere sovrascritto, con risultati potenzialmente di confusione, ma con la ECMAScript 5 di serie che è stato fatto non-scrivibile .

  • Come @some sottolineato nei commenti, v'è anche la funzione globale isFinite () che può essere utile.

Altri suggerimenti

il modo migliore per controllare il risultato di un'operazione numerica contro NaN è aproach questo modo, Esempio:

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');
} 

ed è fatta.

il trucco è che NaN non può essere paragonato a qualsiasi altro valore anche con esso auto (NaN! = NaN è sempre vero in modo che possiamo approfittare di questo e di confrontare risultato contro se stesso)

questo è JavaScript (una lingua buona e bizzarro)

operatore di uguaglianza (== === e) non può essere utilizzato per testare un valore contro NaN. Utilizzare Number.isNaN () o isNaN (), invece.

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top