pourquoi est fonction isNaN en nodejs retour faux dans les cas suivants?
isNaN(''),isNaN('\n'),isNaN('\t')
c'est très bizarre.
est-ce que qqn a une idée que je pensais isNaN représentait n'est Pas un Nombre.
quelqu'un peut-il préciser
Merci d'avance!
OriginalL'auteur azero0 | 2014-06-06
Parce que vous n'êtes pas en passant un nombre, il va le convertir en nombre. Tous ces convertir
0
qui est0
et pasNaN
Noter que
NaN
n'est pas synonyme de "pas un Nombre JavaScript". En fait, c'est complètement séparée de JavaScript et existe dans toutes les langues qui prennent en charge la norme IEEE-754 flotteurs.Si vous voulez vérifier si quelque chose est un nombre javascript, la vérification est
NaN
est un Nombre Javascript =>typeof NaN === 'number' // true
OriginalL'auteur Esailija
NaN est très spécifique: c'est une valeur à virgule flottante qui a le appropriée NaN drapeaux définie par la IEEE754 spec (Article de Wikipedia).
Si vous voulez vérifier si une chaîne a une valeur numérique, vous pouvez le faire
parseFloat(str)
(MDN sur parseFloat). Si cela échoue à trouver tout numérique valide le contenu, ou trouve des caractères non valides avant de trouver un numéro, il sera de retour une valeur NaN.Donc essayer de faire
isNaN(parseFloat(str))
- il me donnetrue
pour les trois exemples posté.isNaN a un but précis; pour détecter des valeurs NaN selon la IEEE754 spec. Il n'est pas là pour être un général numérique de vérifier, ce qui est surtout fait dans parseFloat dont le métier est de construire les nombres de chaînes. Nous sommes seulement en employant isNaN ici parce que parseFloat renvoie une valeur NaN quand il ne parvient pas; si elle avait jeté une erreur, nous ne serions pas à l'aide de isNaN. Ne pas confondre isNaN avec une sorte de isNumeric - isNaN fonctionne uniquement sur des valeurs numériques, pas de chaînes, et les chèques pour un type spécifique de valeur.
OriginalL'auteur Phil H
isNan()
est conçu pour aider à détecter des choses qui sont "mathématiquement undefined' - par exemple,0/0
-Les autres conseils que vous avez obtenu ici, dans cette question sur la façon de détecter les numéros de est solide.
OriginalL'auteur Uberbrady
isNaN est un "n'est Pas un Nombre, la fonction", il renvoie la valeur true si aucun numéro de donner en paramètre, et false quand un nombre est donné
OriginalL'auteur manespgav