【问题标题】:parseInt("08") (no radix) returns 8 in Chrome and FirefoxparseInt("08")(无基数)在 Chrome 和 Firefox 中返回 8
【发布时间】:2020-11-12 14:53:38
【问题描述】:

我向我的同事展示了为什么必须始终使用 parseInt 指定基数,我很惊讶地看到 parseInt("08") 在 Firefox 和 Chrome 的控制台中都返回 8

不应该是八进制并返回0吗?

【问题讨论】:

  • developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 显然它不默认为 10,但涉及某种形式的强制。
  • 八进制解释已经被弃用了很长时间,甚至 ES5 都规定实现不能这样做。我怀疑是否还有大量的环境仍然有效。
  • 08 在八进制中是无效的,所以这样解析没有意义‽
  • +08 也返回 8
  • 另见最后的兼容性图表。将其解析为十进制的变化发生在 Chrome 23 和 Firefox 21 中。

标签: javascript parseint radix


【解决方案1】:

这是老前辈的问题

在 2011 年之前,parseInt("08") 曾经返回 0,因为 parseInt 将确定 08 是八进制,因为它以 0 开头

正如@Pointy 指出的那样,radix 是八进制的以0 开头的字符串,现在已经被弃用了很长时间

由于在这种情况下使用的基数取决于实现,您应该指定一个基数(parseInt("08", 10),因为无法确定是使用八进制还是十进制算法

来源:

【讨论】:

    猜你喜欢
    • 2012-09-01
    • 2011-09-18
    • 2013-10-02
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多