在阅读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总能给我们带来惊喜!
答案 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