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

为什么Javascript中parseInt的radix参数传0会返回十进制结果?

parseInt("1", 0)返回1的原因解释

你观察到的现象是符合ECMAScript官方规范的,核心原因是parseInt对radix(基数)参数的处理有特殊兼容逻辑,并非浏览器实现错误。

parseInt处理radix参数的完整规则如下:

  • 当传入的radix值为undefined、0或者主动省略该参数时,不会直接触发「radix小于2返回NaN」的逻辑,会先进入自动基数推断流程:
    • 若待解析的字符串以0x/0X开头,默认按16进制解析
    • 若待解析的字符串以0开头,ES5之后统一按10进制解析(ES3时代曾按8进制解析,属于历史遗留规则)
    • 其余所有情况默认按10进制解析
  • 只有当radix是明确的1,或者≥37的数值时,才会直接返回NaN

对应你给出的代码parseInt("1", 0):
radix为0触发自动推断逻辑,待解析字符串"1"不属于特殊开头场景,因此按10进制解析得到结果1,和parseInt("1")、parseInt("1", 10)的运行结果完全一致。
你看到的文档描述里「radix小于2或大于36时返回NaN」的规则,是排除了radix为0的特殊场景的,两者并不冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:03