【问题标题】:why parseInt('08') is giving 0, whereas parseInt('07') is giving 7 [duplicate]为什么 parseInt('08') 给出 0,而 parseInt('07') 给出 7 [重复]
【发布时间】:2012-07-31 23:21:14
【问题描述】:

可能重复:
Workarounds for JavaScript parseInt octal bug

我正在研究 javascript,我似乎觉得这很奇怪,javascript 函数 parseInt('08') 返回 0 而 parseInt('07') 返回 7。

这种行为似乎存在于 Firefox 中。

parseInt('08') 在 IE 中返回 8,但在 Firefox 中返回 0..

为什么?我希望 parseInt('08') 按预期返回 8 并进入 IE。

【问题讨论】:

    标签: javascript parseint


    【解决方案1】:

    是的,我以前遇到过这个。这真的很奇怪,因为某些浏览器将其解释为您希望以 8 为基础对其进行解析。请考虑以下文章:

    http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256C85006A6604

    基本上,您必须告诉解析器使用以 10 为底的数字:

    parseInt('08', '10');
    

    【讨论】:

    • parseInt('08', '10');?真的吗?通常我们只会做+"08",因为在String前面添加+会毫无问题地将它变成Number。
    • @Derik Post hoc ergo propter hoc
    • parseInt 需要一个数字作为第二个参数,因此您应该使用 parseInt('08', 10) 而不是 parseInt('08', '10')
    猜你喜欢
    • 2013-10-02
    • 2012-02-04
    • 2012-09-01
    • 1970-01-01
    • 2011-09-18
    • 2022-01-22
    • 2011-11-12
    • 2017-01-01
    相关资源
    最近更新 更多