在javascript中使用parseInt()函数转换成整数时会遇到以下这种情况:

使用parseInt()转换'01'~'07'时可以转换成整数1~7,而转换'08'和'09'时,就会出现转换结果不是7和8,而是为'0'的情况,不熟悉parseInt()函数的人会很奇怪为什么结果会变成0呢?出现这种情况是因为我们平时使用parseInt()函数的时候忽略了它的参数,

parseInt ( String s , [ int radix ] ),用于解析一个字符串,并返回一个整数。

第一个参数表示要被解析的字符串。,第二个参数是可选,表示要解析的数字的基数(就是说明参数是几进制的),其值介于 2 ~ 36 之间,如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

如果第二个参数radix不写,会自动识别string的格式:

以 "0x"或"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),养成一个好的惯。

最新文章

  1. 翻译《Writing Idiomatic Python》(四):字典、集合、元组
  2. css3翻牌效果
  3. Struts2+Hibernate+Spring 整合示例[转]
  4. ruby self.included用法
  5. python 小程序练习
  6. Bootstrap3.0学习第十七轮(JavaScript插件——模态框)
  7. firefox(ff)下无法显示bootstrap图标问题的解决方案(转)
  8. HDU 1708 简单dp问题 Fibonacci String
  9. angularjs 创建自定义的指令
  10. 0520 python
  11. golang实现udp接入服务器
  12. AR入门系列-04-vuforia识别多个图片及同屏展示
  13. swig官方go Examples 源码勘误
  14. JDK8安装时错误1335的解决
  15. Golang mysql 上线的一个坑 Db.close重要性
  16. Hystrix针对不可用服务的保护机制以及引入缓存
  17. 【Git】 GitLab配置优化及汉化
  18. console报错:No mapping found for HTTP request with URI(xxx)
  19. HTML5 通过 FileReader 实现文件上传
  20. hook进程

热门文章

  1. AngularJS开发人员最常犯的10个错误
  2. Python with VS Code
  3. Android碎笔录1——基本布局
  4. java多线程处理问题
  5. js作用域链以及全局变量和局部变量
  6. spring boot(7)-mybatis全注解化
  7. JDK1.7环境
  8. Python用户交互-密码不可见
  9. 如何写自定义的AlertView
  10. APRoundedButton