JavaScript 问题解决 -- parseInt("08")或parseInt("09")转换返回0的解决方法

 

不当心范了一个低级错误,这个问题也是不少初学者容易忽略滴,它就是js中的整数转换函数parseInt(string, radix)。 

使用parseInt转换"01" - "07"时,返回的结果和预期的同样,相应获得1 - 7,若是是parseInt("08")、parseInt("09")...,
函数

那么获得的数值将不是八、9...,你们能够试试。 

不清楚parseInt使用方法的兄弟就会以为很奇怪:为何反回的值这么怪异? 

其实不是parseInt怪异,而是咱们在使用过程忽略了它的第二个参数。 

parseInt(string, radix)的做用是将string转换为整数,第二个参数是设置string的格式,经常使用的有二、八、十、16,表示string是多少进制的数。 

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

spa


若是设置radix的值是0或者不设置时,会自动识别string的格式: 

以 "0x" 开头,parseInt() 会把 string 除0x外的其他部分看成十六进制数, 
以 "0" 开头,parseInt() 会把 string 除0外的字符看成八进制或十六进制数, 
以 1 ~ 9 的数字开头,parseInt() 将把它看成十进制数。 

看到这里,应该明白为何parseInt("08")返回的不是8了吧,由于把它当八进制了,而八进制是没有8的,所 

以要想获得8,那就parseInt("08",10)。 


总之,为了不parseInt("08")获得0这样而不是8的问题存在,在任何使用parseInt的地方都明确指定要转换的格式,
string

即便parseInt("5"),也要写成parseInt("5",10),养成一个好的惯, 

一看就知道 
parseInt("11",10) 是要将十进制的"11"转换为整数, 

parseInt("11",2) 是要将二进制的"11"转换为整数。
event

相关文章
相关标签/搜索