2017-09-02 6 views
-3

Le code exécuté dans la console du développeur est illustré ci-dessous. Pourquoi parseInt renvoie le nombre présent dans [0] ème index d'une chaîne mais ne renvoie pas le nombre présent dans un autre index dans la chaîne?Pourquoi parseInt ('1 an') renvoie 1 mais parseInt ('J'ai 1 an') renvoie NaN?

parseInt('i am 1 year old') 
// output NaN 
parseInt('1 year old') 
// output 1 

Quelle est la raison pour laquelle il se comporte comme ceci?

+1

double possible de [? Pourquoi Javascript parseInt ('0x4A') renvoient le même que parseInt ('0x4Avv')] (https://stackoverflow.com/questions/29781856/ why-does-javascript-parseint0x4a-return-the-same-as-parseint0x4avv) – Thilo

+1

Il tente d'analyser la chaîne. Il voit le premier caractère est un numérique et tout après n'est pas, donc il voit juste 1. quand il essaie de lancer je, il voit que * i * n'est pas un numérique. vous pouvez le voir avec divers tests d'entrée de 'parseInt ('5trees');' et 'parseInt ('16 bougies ');' – Fallenreaper

+1

Parce que c'est ainsi que cela fonctionne, comme indiqué clairement dans [documentation] (https: //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt). –

Répondre

2

La fonction parseInt lit la chaîne à un point où elle conserve des nombres. Par conséquent, 10 is a number renvoie 10 car la fonction s'arrête au troisième caractère, qui est un espace. Mais dans le cas de i am 1 year old, il s'arrête à i parce que ce n'est pas un nombre et renvoie NaN à la place.

Si parseInt rencontre un caractère qui n'est pas un chiffre dans le spécifié radix, il ne tient pas compte et tous les caractères qui suivent retourne la valeur entière analysable jusqu'à ce point. parseInt tronque les nombres en valeurs entières. Les espaces de début et de fin sont autorisés.

Référence: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt

+0

L'extrait pertinent des docs est le suivant: "Un nombre entier analysé à partir de la chaîne donnée.Si le premier caractère ne peut pas être converti en un nombre, NaN est retourné." La réponse est tout à fait juste, je ne sais pas pourquoi quelqu'un l'aurait déprécié. – ishegg

+1

Pour être juste, je pense que l'information sur les espaces de début et de fin est importante. En outre, je n'étais pas au courant de la considération radix. J'ai donc ajouté ce paragraphe. – Nisarg