Javascript:parseInt(14, 4)为什么结果是1而不是NaN

我们知道,parseInt可以接收两个参数,一个是要转换的数字,一个是进制基数。
那么parseInt(14,4)求解的过程是怎样的。
4进制是用0,1,2,3来表示的,那么为什么四进制数里面有14吗。
另外,parseInt(4,4)的结果是NaN。这又是为什么呢。

阅读 3.2k
4 个回答

parseInt 会先将第一个参数转换为字符串,忽略开头空白字符,且一旦遇到不符合指定进制的字符便终止。所以 parseInt(14,4) 得到 1,parseInt(4,4) 无结果得到 NaN。

解析的时候一旦遇到该数大于或等于基数,就是NaN,然后中止解析直接输出符合规则的那些数字,(4,4),一开始就遇到4是大于或等于基数4,直接中止解析并且输出NaN,然后你说的(14,4),他是解析到1时是行的,解析到4时,发现4大于等于基数4,所以不符合规则就舍弃了,直接就只解析到符合规则的1并且输出它

parseInt()第二个可选参数表示进制,其取值范围是2~36,如果遇到第一个参数的首字符不能解析就会直接返回NaN。建议参考MDN中的parseInt()用法。

parseInt(num,base)

这里 base 是 num 的基数,而不是把 num 转化为 base 禁止

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题