由parseInt("09")引发的问题

在项目中使用到了parseInt("09")的转换,结果总是显示为0,在网上搜索了一下原来是由于进制引起来的问题。

从parseInt("08")开始,都会是0,因为在使用parseInt过程中,忽略了还有第二个参数的存在。

parseInt(string, radix)的作用是将string转换为整数,第二个参数是设置string的格式,常用的有2、8、10、16,表示string是多少进制的数。

radix 可取值的范围是2~36,如果不在这个范围内,将返回NaN。

如果设置radix的值是0或者不设置时,会自动识别string的格式:
以 "0x" 开头,parseInt() 会把 string 除0x外的其余部分当作十六进制数,
以 "0" 开头,parseInt() 会把 string 除0外的字符当作八进制或十六进制数,
以 1 ~ 9 的数字开头,parseInt() 将把它当作十进制数。

由此可记住,以后在使用parseInt时,要把第二个参数写全,养成一个好习惯。

写成parseInt("09",10)即可解决问题,将09按照十进制转换。

原文地址:https://www.cnblogs.com/bingya/p/3011375.html