2009-02-18 4 views
8

si je veux tester le résultat d'une expression et la fonction renverrait NaN comment pourrais-je vérifier cela?
exemples:
$('amount').value.toInt()!='NaN'
^ne fonctionne pas et je suppose que la valeur retournée est pas une chaîne,
$('amount').value.toInt()!=NaN
^ne marche pas semblent fonctionner soit et celui-ci semble évident

alors comment puis-je vérifier wether la valeur retournée ce n'est pas un nombre?Quel est le mot-clé réservé pour NaN en javascript?

+0

Il jette indéfini habituellement pour toute sorte de folie. –

Répondre

36

La valeur NaN est définie comme n'étant pas égale à tout, y compris elle-même. Testez si une valeur est NaN avec la fonction isNaN(), de manière appropriée. (ECMAScript 6 ajoute une fonction Number.isNan() avec des sémantiques différentes pour les arguments qui ne sont pas des nombres, mais elle n'est pas encore prise en charge dans tous les navigateurs à partir de 2015).

Il y a deux propriétés intégrées disponibles avec une valeur NaN: la propriété NaN globale (à savoir window.NaN dans les navigateurs), et Number.NaN. C'est pas un mot-clé de la langue. Dans les anciens navigateurs, la propriété NaN pouvait être remplacée, avec des résultats potentiellement confus, mais avec le ECMAScript 5 standard it was made non-writable.

  • Comme @some souligné dans les commentaires, il y a aussi la fonction globale isFinite() qui peut être utile.
+0

merci beaucoup :) vraiment aidé + 20rep pour vous – lock

+0

@lock, c'est 10 pour un vote et 15 pour un accepter, donc c'est 25 (à moins que les choses ont changé récemment). Et voici un autre 10, @Miles. – paxdiablo

+1

ohw désolé, mauvais maths, merci encore à la communauté de programmation très utile – lock

1

L'opérateur d'égalité (== et ===) ne peut pas être utilisé pour tester une valeur par rapport à NaN. Utilisez Number.isNaN() ou isNaN() à la place.

NaN === NaN;  // false 
Number.NaN === NaN; // false 
isNaN(NaN);   // true 
isNaN(Number.NaN); // true 
2

la meilleure façon de vérifier le résultat de l'opération numérique contre NaN est de Aproach cette façon, exemple:

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

et il est fait.

l'astuce est que NaN ne peut être comparé à une autre valeur, même avec elle-même (NaN! = NaN est toujours vrai pour que nous puissions profiter de cette situation et comparer les résultats contre lui-même)

c'est JavaScript (un bon et bizarre langage)

Questions connexes