parseInt转化的坑

本文详细介绍了 JavaScript 中的 parseInt() 函数,包括其如何将字符串参数转换为指定基数的整数,以及在不同环境下可能产生的差异。文章还深入探讨了 parseInt 的常见误区,例如在特定条件下对特殊字符串的解析结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

parseInt() 函数解析一个字符串参数,并返回一个指定基数的整数 (数学系统的基础)。---MDN

划重点:

  • 当第一个参数不是字符串时, 会先转成字符串(toString)再进行转化. 
  • 第二个参数是一个介于2和36之间的整数(数学系统的基础). 当不指定第二个参数时, 不同的环境可能会有不同的转化结果, 请务必使用第二个参数.
  • 转出的数字是整数.

说一些parseInt的坑.

parseInt(1/0, 19) // 18 wtf???
// 1/0结果是Infinity, 转化为字符串是"Infinity", 19进制使用"0-9a-i"标识数字.
// 所以, "Infinity"被当做19进制进行转化时, I转化成了18, n不在19进制标识符里边, 所以转化停止.
// 最终的结果就是18.

//类似的还有
parseInt(false, 16) // 250
parseInt(function(){}, 16) // 15

parseInt(0.0000042, 10) // 0
// 0.0000042转成字符串是"0.0000042", 字符串再转成数字, 第一个字符是"0", 第二个字符是".", 
// 好, 整数部分转完了
// 结果是0

parseInt(0.00000042, 10) // 4 wtf???
// 0.00000042转成字符串是"4.2e-7", 字符串再转成数字, 第一个字符是"4", 第二个字符是".", 好, 整数部分转完了
// 结果是4

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值