2017-09-02 78 views
-3

在开发人员控制台中运行的代码如下所示。为什么parseInt返回字符串的[0]索引中存在的数字,但不返回字符串中任何其他索引中存在的数字?为什么parseInt函数( '1岁'),返回1,但parseInt函数( '我是1岁')将返回NaN?

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

的原因是什么,为什么它的行为这样的吗?

+1

的可能的复制[?为什么使用Javascript parseInt函数( '0x4A')返回相同的parseInt函数( '0x4Avv')](https://stackoverflow.com/questions/29781856/为什么此结果JavaScript的parseint0x4a回报最相同的-parseint0x4avv) – Thilo

+1

它正试图解析字符串。它看到第一个字符是一个数字,之后的所有内容都不是,所以它只看到1.当它试图转换我时,它看到* i *不是数字。 '和'parseInt函数('16蜡烛);你可以用parseInt函数的'各种输入测试(“5trees”)看到它' – Fallenreaper

+1

因为这是它是如何定义的工作,作为[文件]中明确指出(HTTPS: //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt)。 – 2017-09-02 04:36:15

回答

2

parseInt函数读取字符串,它不断获得数点。所以,10 is a number返回10,因为函数停在第三个字符,这是一个空格。但在i am 1 year old情况下,它停在i,因为它不是一个数字,并返回NaN代替。

如果parseInt函数遇到一个字符不在 指定基数的数字,它忽略它和所有后续字符和 返回解析到该点的整数值。 parseInt将 数字截断为整数值。前后空格是允许的。

参考:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt

+0

的文档的相关摘录是这样的:“从给定的字符串分析的一个整数如果第一个字符不能被转换为数字,则返回NaN。”。答案完全正确,但不知道为什么有人会为此付出代价。 – ishegg

+1

嗯,为了公平起见,我认为关于主要和尾随空间的信息很重要。另外,我并不知道基数的考虑因素。所以我加了这个段落。 – Nisarg