javascript数值字面量支持二进制(0b/0b)和十六进制(0x/0x),运行时自动转为十进制参与运算;均不区分大小写,es2021起支持下划线分隔;不可用于浮点数或负号前缀;内部统一以双精度浮点存储,进制仅为语法糖。

JavaScript 中数值字面量支持二进制(0b 或 0B)和十六进制(0x 或 0X)表示,它们在运行时自动转换为十进制数字,参与所有常规数值运算。
二进制字面量的写法与注意事项
以 0b 或 0B 开头,后跟 0 和 1 组成的序列:
- 必须只包含
0和1,否则报SyntaxError - 不区分大小写:
0b1010和0B1010都等于十进制 10 - 允许下划线分隔(ES2021 起),提升可读性:
0b1010_1100→ 172 - 不能用于浮点数或负号前缀(如
-0b101合法,但0b-101不合法)
十六进制字面量的写法与常见用法
以 0x 或 0X 开头,后跟 0–9 和 a–f(或 A–F):
- 字母不区分大小写:
0xFF、0xff、0xFf都等于十进制 255 - 同样支持下划线:
0xA1_B2_C3→ 十进制 10597059 - 常用于颜色值、位掩码、内存偏移等场景,语义更紧凑
- 不能以
0x开头再跟非十六进制字符,例如0xG1会报错
与其他进制的互转和运行时行为
JS 内部统一用双精度浮点数存储数值,进制只是字面量语法糖:
- 打印或参与计算时,一律按十进制显示和处理:
console.log(0b1111 + 0xFF)输出 270 - 可用
Number.toString(radix)反向转换:(255).toString(16)→"ff",(10).toString(2)→"1010" -
parseInt(str, radix)可解析字符串:parseInt("1010", 2)→ 10,parseInt("FF", 16)→ 255
实际编码中的使用建议
二进制和十六进制字面量适合表达位模式或协议字段,但需注意可读性与团队规范:
- 位操作(如掩码、标志位)优先用二进制:
const READ = 0b001; const WRITE = 0b010; - 颜色、字节序列、哈希值等用十六进制更自然:
const color = 0x3498db; - 避免在普通计数逻辑中混用(如
for (let i = 0; i ),除非上下文明确需要进制语义 - ESLint 等工具可通过
no-magic-numbers规则提醒硬编码值,此时用命名常量包裹进制字面量更佳
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











