js 中parseInt(xxx,10) 和 parseInt(xxx)的用法

本文探讨了JavaScript中parseInt函数的行为特点,特别是对不同前缀的字符串的解析方式。通过实例展示了如何正确使用parseInt来获取期望的数值,避免因默认进制引起的误解。

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

今天遇到了一个JS中相当奇怪的问题:

对日期字符串2010-08-11 进行字符串截取

var date='2010-08-11 ';

想通过

parseInt(date.substr(5, 2))获取月份值8可是发现返回值总是0;迷惑不解,翻开JS课件,才发现自己真是孤陋寡闻了......

 

现在谈谈parseInt(xxx,[radix])) 和 parseInt(xxx)的用法:

 

parseInt(numStr, [radix])
参数:

numStr 必选项- 要转换为数字的字符串。
radix 可选项。在 2 和 36 之间的表示 numStr所保存数字的进制的值。如果没有提供,则numStr前缀为 '0x' 的字符串被当作十六进制,numStr前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。

例如:

var numStr='07';

parseInt(numStr);//返回7 ok

var numStr='011';

parseInt(numStr);//返回9 奇怪?  正向前面讲述说的原因,当不指定radix 的值,前缀为'0'的字符串按八进制进行处理,所以会返回9

要得到11需要:

parseInt(numStr,[10]);//返回11

 

如果 numString 的前缀不能解释为整数,则返回 NaN(而不是数字)。
如:
parseInt("abc")     // 返回 NaN。

然而:
parseInt("12a1bc")   // 返回 12。

parseInt("018")   // 返回 1。因为前缀为'0’视为八进制,8为不可解析的数,所以返回 1。

parseInt("0x1E")   // 返回 30。

parseInt("0x1G")

由此可见,只要前缀可以解析成数字的就会返回数字 不能解析的部分会自动抛弃。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值