js的parseInt("08")事件

js的parseInt("08")事件

不小心范了一个低级错误,这个问题也是很多初学者容易忽略滴,它就是js中的整数转换函数parseInt(string, radix)。

使用parseInt转换"01" - "07"时,返回的结果和预期的一样,相应得到1 - 7,如果是parseInt("08")、parseInt("09")...,那么得到的数值将不是8、9...,大家可以试试。

不清楚parseInt使用方法的兄弟就会觉得很奇怪:为什么反回的值这么怪异?

其实不是parseInt怪异,而是我们在使用过程忽略了它的第二个参数。



parseInt(string, radix)的作用是将string转换为整数,第二个参数是设置string的格式,常用的有2、8、10、16,表示string是多少进制的数。

radix 可取值的范围是2~36,如果不在这个范围内,将返回NaN。


如果设置radix的值是0或者不设置时,会自动识别string的格式:

以 "0x" 开头,parseInt() 会把 string 除0x外的其余部分当作十六进制数,
以 "0" 开头,parseInt() 会把 string 除0外的字符当作八进制或十六进制数,
以 1 ~ 9 的数字开头,parseInt() 将把它当作十进制数。





看到这里,应该明白为什么parseInt("08")返回的不是8了吧,因为把它当八进制了,而八进制是没有8的,所

以要想得到8,那就parseInt("08",10)。


总之,为了避免parseInt("08")得到0这样而不是8的问题存在,在任何使用parseInt的地方都明确指定要转换的格式,即使parseInt("5"),也要写成parseInt("5",10),养成一个好的惯,

一看就知道
parseInt("11",10) 是要将十进制的"11"转换为整数,

parseInt("11",2) 是要将二进制的"11"转换为整数。

 

转自:http://www.87cool.com/article-453.aspx

### JavaScript 中 `parseInt` 函数的用法 `parseInt` 是用于解析字符串并返回整数的一个全局函数。该函数尝试将给定的字符串转换成一个指定基数(通常为十进制)下的整数值[^1]。 如果遇到无法识别为数字字符的部分,则停止解析,并返回已经成功解析到的结果部分作为整数。当输入为空或完全不可解析时,会返回 `NaN` (Not-a-Number)。 #### 基本语法 ```javascript parseInt(string, radix); ``` - **string**: 要被解析的字符串。 - **radix** *(可选)*: 表示要使用的进制系统的数字(介于 2 到 36)。如果不提供此参数,默认情况下将以十进制来解释数字;但如果字符串以 "0x" 开头则会被认为是十六进制,仅以零开头则是八进制。 #### 使用实例 下面是一些具体的例子展示如何使用 `parseInt()`: ```javascript console.log(parseInt('123')); // 输出: 123 console.log(parseInt('12.34')); // 输出: 12 console.log(parseInt('12a3b', 16)); // 输出: 29859 (因为'a'=10,'b'=11) console.log(parseInt('abc')); // 输出: NaN console.log(parseInt('0xF', 16)); // 输出: 15 console.log(parseInt('070')); // 输出: 56 (在某些环境中可能被认为是八进制) ``` 对于不带小数点的有效数字串,`parseInt` 可以正常工作并将它们转化为相应的整型值。然而需要注意的是,在处理带有前导零或其他特殊格式的情况下,可能会得到意想不到的结果,因此建议总是显式指明所需的进制系统。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值