【问题标题】:Why does parseInt return NAN for "08" string and return 7 for "07" string?为什么 parseInt 为“08”字符串返回 NAN 而为“07”字符串返回 7?
【发布时间】:2013-06-20 02:12:17
【问题描述】:

我创建了一个简单的应用程序脚本如下:

function testeBug() {
  Logger.log(parseInt("07"));
  Logger.log(parseInt("08"));
}

这是记录器的输出:

[13-06-19 23:09:13:130 BRT] 7.0 [13-06-19 23:09:13:130 BRT] NaN

为什么会这样? 我正在使用 Google Apps 脚本

【问题讨论】:

  • How come parseInt("08") = 0, parseInt("07") = 7 可能重复 - JavaScript 中的八进制 - 8 不是有效的八进制数字。
  • 我使用的是 GOOGLE APPS SCRIPT 而不是 Java 脚本
  • Altought 相同的解决方案适用于它。
  • Google 似乎对“GOOGLE APPS SCRIPT not Java Script”的看法略有不同:“Google Apps Script 是一种 JavaScript 云脚本语言,可让您扩展 Google Apps 并构建Web 应用程序" (developers.google.com/apps-script/overview)
  • 阿列克谢,感谢您的解释。我没有注意到这一点。在您的评论中 +1。

标签: google-apps-script


【解决方案1】:

需要将radix参数传入parseInt

parseInt("08", 10);

不这样做会导致某些浏览器将带有前导零的字符串视为 base-8,这就是您所看到的,因为 base-8 中的 07 是 7,而 08 是无效的。

【讨论】:

    【解决方案2】:

    07 是有效的八进制表示法,08 不是。

    【讨论】:

      猜你喜欢
      • 2012-02-04
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 2012-07-31
      • 2016-10-16
      • 1970-01-01
      • 2014-09-25
      相关资源
      最近更新 更多