You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中带前导零的数字解析规则为何存在差异?

关于JS中前导零数字的解析与数组排序问题

核心原因:JS不同版本对前导零数字的解析规则差异

  • ES5及之前的非严格模式:
    • 数字以0开头且后续字符都是0-7时,会被当作八进制数解析;
    • 以0开头但包含8或9时,无法构成合法八进制,会 fallback 成十进制数解析。
  • ES6及之后:官方废除了前导零表示八进制的写法,改用0o前缀(比如0o31才对应八进制25),前导零的数字在严格模式下会直接报错。

对应你的例子拆解

  1. 输入031:符合八进制规则,计算为 3*8 + 1 = 25,所以控制台输出25;
  2. 输入0945:因为包含数字9,不满足八进制的0-7范围,直接按十进制解析为945;
  3. 数组var a = [0310, 2329, 2358, 0945]的实际值:
    • 0310是合法八进制,计算为 3*8² + 1*8 + 0 = 3*64 + 8 = 200;
    • 0945按十进制解析为945;
      所以数组实际存储的是[200, 2329, 2358, 945],调用默认升序排序后,自然得到[200, 945, 2329, 2358]。

内容的提问来源于stack exchange,提问作者ABGR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:16:01