`

js的parseInt("08")

阅读更多
js的parseInt("08")事件
不小心范了一个低级错误,这个问题也是很多初学者容易忽略滴,它就是js中的整数转换函数parseInt(string, radix)。
使用parseInt转换"01" - "07"时,返回的结果和预期的一样,相应得到1 - 7,如果是parseInt("08")、parseInt("09")...,那么得到的数值将不是8、9...,大家可以试试。
不清楚parseInt使用方法的兄弟就会觉得很奇怪:为什么反回的值这么怪异?
其实不是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("08")返回的不是8了吧,因为把它当八进制了,而八进制是没有8的,所以要想得到8,那就parseInt("08",10)。
总之,为了避免parseInt("08")得到0这样而不是8的问题存在,在任何使用parseInt的地方都明确指定要转换的格式,即使parseInt("5"),也要写成parseInt("5",10),养成一个好的惯,
一看就知道
parseInt("11",10) 是要将十进制的"11"转换为整数,
parseInt("11",2) 是要将二进制的"11"转换为整数
分享到:
评论

相关推荐

    【JavaScript源代码】JavaScript parseInt()与Number()区别案例详解.docx

    JavaScript parseInt()与Number()区别案例详解  学习目标: parseInt()、Number()这两个函数用到最多的地方就是把一个字符串转换成数据类型,那么他们都有哪些区别? 学习内容: parseInt()函数将给定的字符串...

    javascript parseInt与Number函数的区别.docx

    javascript parseInt与Number函数的区别.docx

    javascript parseInt 函数分析(转).docx

    javascript parseInt 函数分析(转).docx

    js中parseInt函数浅谈

    比如说parseInt(“010”,10)就是10进制的结果:10,parseInt(“010”,2)就是2进制的结果:2,parseInt(“010”,8)就是8进制的结果:8,parseInt(“010”,16)就是2进制的结果:16。 下面我来说说没有指定进制单位的...

    js parsefloat parseint 转换函数

    js parsefloat parseint JavaScript提供了3个显式的类型转换函数,分别是eval()、parseInt()和parseFloat()。 eval()函数:将字符串表达式转换成数字值。例如,语句total=eval(“432.1*10”&#41...

    javascript parseInt() 函数的进制转换注意细节.docx

    javascript parseInt() 函数的进制转换注意细节.docx

    javaScript parseInt字符转化为数字函数使用小结.docx

    javaScript parseInt字符转化为数字函数使用小结.docx

    javascript parseInt 大改造

    还隐约记得第一次遇到 parseInt这个诡异问题的时候,以为发现了IE的BUG,兴奋不已。

    javascript parseInt 函数分析(转)

    用javascript的parseInt函数时, parseInt(“08”)或者parseInt(“09”)返回的居然是0, 而parseInt(“01”)…parseInt(“07”)都是正确的。 为什么这样呢? 一开始很难理解,后来发现出现这个

    js parseInt的陷阱分析小结

    js parseInt的陷阱分析小结,当第一个字符为0时,Js会把它看成一个8进制数字,其他8进制之外的字符都回被忽略掉。

    关于javascript中的parseInt使用技巧

    如果不指定第二个参数,那么它只能正确地转换01到07(即把它们转换成1到7),从08开始,它就会按照“0开头的是八进制数”的规则转换了!正好现在是9月,我随手选的日期,正好暴露了这个问题,我要是在上半年做这个,...

    javaScript parseInt字符转化为数字函数使用小结

    parseInt(“10”) 到 以后都能得到正确的结果,但如果是parseInt(“08”) 或parseInt(“09”)则返回0; 首先看parseInt语法:parseInt(string, radix); 如果后面参数没写就以第一个的开头判断其中string为要转换的...

    javascript parseInt与Number函数的区别

    但是parseInt(“08”, 10)是可以返回8的。 为搞清楚两者的区别, 参考了别人写的parseInt&Number的区别: parseInt Parses a string argument and returns an integer of the specified radix or base. 核心函数 ...

    JavaScript中的ParseInt(“08”)和“09”返回0的原因分析及解决办法

    今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题。 做了一个实验: alert(parseInt(“01″)),当这个里面的值为01====》07时都是正常的,但是在”08”,...parseInt(“08”,10) 或者 parse

    JS中parseInt()和map()用法分析

    本文实例讲述了JS中parseInt()和map()用法。分享给大家供大家参考,具体如下: parseInt()的几个例子 var b = parseInt("01"); alert("b="+b); var c = parseInt("09/08/2009"); alert("c="+c); ...

    js parseInt(08)未指定进位制问题

    其中string为要转换的字符串,radix为二进制,八进制,十六进制或十进制。 在默认不指定radix时,当以0x开关时,为十六进制;如果以0开关且第二位不为x,则让... 如我们平时都用十进制位,我们就 parseInt(“08”, 10);

    JavaScript的parseInt 进制问题

    今天在整理以前写过的一段根据周期值自动计算下次执行日期的js代码,发现一bug,我使用parseInt对源数据串进行转换,当输入类似:2009-05-05时,parseInt将把串的05做8进制转换,这样结果自然就不对了。

    JS实现手写parseInt的方法示例

    本文主要给大家介绍了关于JS实现手写parseInt的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 手写parseInt的实现:要求简单一些,把字符串型的数字转化为真正的数字即可,但不能...

Global site tag (gtag.js) - Google Analytics