由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按照十进制转换。