2016-04-08 2 views
-4
console.log(typeof NaN) 

Ce qui précède renvoie le 'numéro'.JavaScript: comment contourner le problème de type NaN?

Q1. Comment trouver un moyen de contourner cela?

Q2. Quelle est la meilleure façon de trouver le type d'une variable? (au lieu de typeof)

Merci!

Mise à jour: Merci pour tous vos commentaires. Mais le premier répondant a compris ma question. J'étais préoccupé par l'évaluation du type d'une déclaration de retour de «NaN» pour ne pas apparaître comme un «numéro».

j'utilisais typeof() dans une instruction if d'agir quand if (typeof (x) == "nombre") {..} faire

Mais la condition passaient même si x est NaN. Je voulais résoudre cela. Je ne savais pas que 'NaN' était de type 'Number' parce que NaN signifie 'Not a Number'. Cela a conduit à la confusion. Je m'excuse de ne pas être clair sur ce que je voulais demander. Mais mon problème est résolu.

Merci à tous!

+4

Q1. moyen de contourner quoi? typeof renvoyer ce que la spécification dit qu'il le fera? 2. Quel est le problème avec l'utilisation de typeof? – djechlin

+0

'NaN' est un type de nombre. Qu'essayez-vous de faire? –

+0

Connexes: [Pourquoi typeof NaN renvoie 'numéro'?] (Http://stackoverflow.com/questions/2801601/why-does-typeof-nan-return-number) –

Répondre

-2

N'utilisez pas typeof à moins que la vitesse ne soit nécessaire pour les deux tableaux et null. Cependant, selon la spécification, NaN est en fait de type Number.

Utilisez

var getType = function (obj) { 
    return Object.prototype.toString.call(obj).slice(8, -1); 
}; 
+1

Erreur de référence: Pub n'est pas défini. – djechlin

+3

Et aussi: quoi? Semble renvoyer typeof seulement avec la première lettre en majuscule. Y compris Nan -> "Nombre" qui semble être la plainte du PO. Et il appelle en interne typeof je suis assez sûr. Ce n'est pas "mieux" en aucune façon. – djechlin

+0

Cela provient d'une bibliothèque. Je l'ai édité pour que vous utilisiez seul. –

0

Si vous voulez vérifier si un nombre est non NaN, vous pouvez utiliser isNaN fonction:

var val = 4 

console.log(isNaN(val)) // false 

var val2 = NaN 

console.log(isNaN(val2)) // true 

Pour vérifier si une variable contient un nombre et n'est pas NaN Vous pouvez ensuite utiliser ce qui suit:

typeof val === 'number' && !isNAN(val) 
+1

Mais sachez que 'isNaN (undefined)' est 'true'. –

+0

Cela aide aussi. Je vous remercie! –