为什么parseInt(“123abcd”)和parseInt(“abcd123”)的结果在JavaScript中有所不同?

时间:2015-02-07 13:38:35

标签: javascript

在阅读JavaScript中的NaN时,我遇到了一些例子。然后我开始测试更多,我对结果感到惊讶。例如,我想知道为什么JavaScript以不同的方式解释下面两个几乎相同的语句

parseInt("123abcd") //  123
parseInt("abcd123") // NaN

为什么javascript为parseInt返回123(" 123abcd")以及为什么NaN为另一个?

也是为什么

isNaN("1") //false
But
isNaN("hello") // true -----> This seems logical because hello is a not number

似乎JavaScript总能给我们带来惊喜!

2 个答案:

答案 0 :(得分:3)

对于第一种情况

  

MDN:
   如果第一个字符无法转换为数字,则parseInt将返回NaN。

对于第二个,isNaN将输入转换为Number,然后检查它是否为数字。

所以"1"1,因此是一个数字。

此外,值得知道使用10作为基数以避免任何错误解释。

parseInt(input, 10);

答案 1 :(得分:2)

  

如果parseInt遇到的字符不是指定基数中的数字,它会忽略它和所有后续字符,并返回解析到该点的整数值。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt