quel est le mot-clé réservé pour NaN en javascript?
-
05-09-2019 - |
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?
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