parseInt('08')到底是什么?

leo_space 2015-11-01 12:23:03
网上搜索了一些资料,都说parseInt('08')结果是0,因为0开头的字符串在转换为整数时会按八进制转换。但是我在IE11,谷歌浏览器,360浏览器中alert(parseInt('08'))弹出结果都是8,这到底是怎么回事呢?
...全文
161 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
leo_space 2015-11-03
  • 打赏
  • 举报
回复
结贴了。ParseInt在转换0开头的字符串时,低版本的浏览器和高版本的浏览器有不同的实现。低版本浏览器会以八进制来转换,高版本浏览器以十进制来转换。为了避免这个坑,还是老老实实的加上ParseInt的第二个参数,来指定十进制转换。ParseInt("08","10")
qq_31182999 2015-11-03
  • 打赏
  • 举报
回复
拍摄于《JavaScript权威指南》,第一部分-3.8.3
xuzuning 2015-11-01
  • 打赏
  • 举报
回复
08 不可能解释为八进制数,因为八进制数只有0、1、2、3、4、5、6、7 八个状态 所以低版本的浏览器将其解释成 0,而高版本浏览器将其解释成十进制数 parseInt('010') 才是10进制8
xuzuning 2015-11-01
  • 打赏
  • 举报
回复
我前面已经说了,低版本浏览器中 parseInt('08') 都是 0,高版本的都是 8 这是技术的进步:智能识别
leo_space 2015-11-01
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
那也不是 parseInt('077') 就是 63
也不尽然。我在火狐浏览器里测试,parseInt('077') 是63,同时parseInt('08')是0,但其他浏览器里均是77和8。 个人猜测,parseInt函数在不同的浏览器有不同的实现方式
xuzuning 2015-11-01
  • 打赏
  • 举报
回复
那也不是 parseInt('077') 就是 63
KK3K2005 2015-11-01
  • 打赏
  • 举报
回复
我觉得你以你测试的结果为准
leo_space 2015-11-01
  • 打赏
  • 举报
回复
[quote=引用 1 楼 xuzuning 的回复:] 08 不可能解释为八进制数,因为八进制数只有0、1、2、3、4、5、6、7 八个状态 所以低版本的浏览器将其解释成 0,而高版本浏览器将其解释成十进制数 也就是说,在现代浏览器里,使用parseInt不用考虑这个隐藏的八进制转换了是吗?

87,976

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧