parseint 的第二个参数 radix 必须显式指定 2–36 之间的整数,否则依赖不可靠的推测规则;解析时只处理开头有效字符,忽略后续非法内容及前导空白,字母不区分大小写。

parseInt 的第二个参数(radix)用于明确指定字符串按几进制解析,这是避免隐式转换出错的关键。不传或传错 radix,可能导致意外结果,比如以 0 开头的字符串被当成八进制(旧规范)或直接忽略前导零。
必须指定 radix,推荐始终写 10、16、2 等明确值
即使想转十进制,也应显式写 parseInt(str, 10)。不写第二参数时,JavaScript 会按“推测规则”处理:以 0x 开头按十六进制,以 0 开头(非严格模式下)可能按八进制,其余按十进制——这种行为已废弃且不可靠。
-
parseInt("10")→ 10(但依赖环境,不推荐) -
parseInt("10", 10)→ 10(明确、安全) -
parseInt("0x1F", 16)→ 31 -
parseInt("1101", 2)→ 13
radix 范围是 2–36,超出会返回 NaN
radix 必须是 2 到 36 之间的整数。小于 2 或大于 36,parseInt 直接返回 NaN,不会尝试“修正”或降级处理。
-
parseInt("10", 1)→NaN -
parseInt("Z", 36)→ 35(因为 Z 是 36 进制中表示 35 的字符) -
parseInt("Z", 37)→NaN
字符串中只解析开头的有效数字,后续非法字符自动截断
parseInt 从左到右扫描,遇到第一个无法在当前 radix 下识别的字符就停止,不报错,只返回已成功解析的部分。
-
parseInt("123abc", 10)→ 123 -
parseInt("FFG", 16)→ 255("FF" 合法,"G" 不在十六进制字符集内,停止) -
parseInt(" 42px", 10)→ 42(自动忽略开头空白)
注意前导零和大小写兼容性
radix 指定后,前导零不再触发特殊进制判断;字母部分不区分大小写(如 a 和 A 都代表 10)。
-
parseInt("0010", 10)→ 10(不是 8) -
parseInt("0010", 2)→ 2("0010" 二进制 = 2) -
parseInt("aF", 16)→ 175,parseInt("AF", 16)→ 175(结果相同)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











