Question

si je veux tester le résultat d'une expression et la fonction renverrait NaN Comment puis-je vérifier que
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 évidente

Comment puis-je vérifier wether la valeur retournée est pas un nombre?

Était-ce utile?

La solution

La valeur NaN est définie comme inégale à tout, y compris lui-même. Test si une valeur est NaN avec le isNaN() fonction, de façon assez appropriée. (ECMAScript 6 ajoute un Number.isNan() fonction sémantique différente pour les arguments non-nombre, mais il est pas pris en charge dans tous les navigateurs encore en 2015).

Il y a deux avec une valeur NaN intégrée dans les propriétés disponibles: le global propriété NaN (c.-à-window.NaN dans les navigateurs), et Number.NaN . Il est pas un mot-clé de la langue. Dans les anciens navigateurs, la propriété NaN pourrait être écrasée, avec des résultats pouvant prêter à confusion, mais avec la ECMAScript 5 standard, il a été fait non inscriptible.

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

Autres conseils

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)

est ce JavaScript (un langage bien et bizarre)

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

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top