本文系统梳理 JavaScript 中数字的多种表示形式,涵盖十进制、八进制及十六进制的书写规范。重点解析十六进制中字母 e 的特殊含义、科学计数法的使用限制,以及八进制前缀 0 的判定规则,帮助开发者准确理解代码中的数值字面量。
JavaScript 数字格式详解:十进制、八进制与十六进制写法
JavaScript 支持多种数字字面量格式,不仅限于常规写法。例如,整数可直接写作 1;小数可写作 1.2;科学计数法允许使用 e 表示指数,如 1.2e3 等价于 1200,1.2e+3 同样为 1200,而 1.2e-3 则对应 0.0012。此外,省略整数部分的写法如 .12e+2 表示 12,负数形式如 -.12e-2 则表示 -0.0012。
上述示例均为十进制表示。接下来讨论八进制和十六进制的写法。十六进制以 0x 开头,例如 0x00、0x11 和 0xff,它们对应的十进制值分别为 0、17 和 255。
八进制在 JavaScript 中以前导数字 0 表示,例如 01、07、010 和 012。需注意这里的 0 是数字零而非字母 o。尽管形式上看似十进制,但前导 0 明确标识其为八进制数值。

并非所有以 0 开头的数字都是八进制。例如 08 和 09 会被解析为十进制,因为八进制的有效数字仅为 0 到 7,遇到 8 或 9 时无法继续表示,因此直接按十进制处理。

了解这些格式后,对数字表现形式的认知将更加全面,无需再因大牛代码中复杂的数字写法而感到困惑。
有人可能会问,八进制和十六进制是否支持类似科学计数法的 e+- 格式?

0x12e3 === 4835 0x12e+3 === 305 0x12e-3 === 299 0x12 === 18 显然,结果与预期不符。 实际上,0x12e3 中的 e 属于十六进制字符(0-9, a-f,不区分大小写),因此 0x12e3 是一个合法的十六进制数值。 至于 0x12e+3,它实质是两个数值的加法运算。0x12e 的十进制值为 302,加上 3 得到 305,故其为一个表达式而非单一数字。
类似地,011e2 这样的写法会直接导致语法错误。因此,科学计数法(使用 e 表示指数)仅适用于十进制数字。
掌握这些规则后,遇到 1e6 时便不会误认为是 IE6 浏览器,也能理解 .5 为何合法,以及 .1e1 为何等于 1。
本文简要介绍了 JavaScript 中数字格式的核心知识点,建议读者结合实际代码进一步练习和体会。