You need to enable JavaScript to run this app. 为什么JavaScript中数组存储的首个数字元素运行结果不符合预期
优惠活动
大模型
产品
解决方案
定价
更多

为什么JavaScript中数组存储的首个数字元素运行结果不符合预期

问题原因说明

你遇到的这个现象是JavaScript的八进制字面量解析规则导致的:

  • 在非严格模式下,当数字字面量以0开头、且后续所有数字都在0-7范围内时,JS会默认将其识别为八进制(基数为8)的数值
  • 你写的0123正好符合这个规则,换算成十进制的计算逻辑是:1*8² + 2*8¹ + 3*8⁰ = 64 + 16 + 3 = 83,和你实际得到的输出一致。
解决方案

如果你的需求是保留十进制的123,或者要保留前导零的展示效果,可以参考以下两种处理方式:

  1. 不要给十进制数字加不必要的前导零,直接写123即可:
const arr = [123, 1456];
console.log(arr); // 输出 [123, 1456]
  1. 如果你确实需要保留前导零的字符串形式,直接把值定义为字符串类型:
const arr = ['0123', '1456'];
console.log(arr); // 输出 ["0123", "1456"]

补充说明:如果在严格模式下,以0开头的八进制字面量会直接抛出语法错误,也能避免这类隐式转换的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 16:18:02