一、parseInt() 函数解析字符串参数,并返回指定的基数(基础数学中的数制)的整数。
二、parseInt只能返回一个整数,所以使用它会丢失小数部分。
| 【示例】```javascript alert( parseInt(‘100px’) ); // 100 alert( parseInt(‘12.3’) ); // 12,只有整数部分被返回了
|
| --- |
<a name="YRQL4"></a>
# 语法
`parseInt(str, radix) `
<a name="ktszZ"></a>
## 参数
<a name="R6yTw"></a>
### str
一、str字符串只会被解析从第一个字符开始直到不是数字的字符部分
| 【示例】```javascript
// 当字符串中间存在非数字,那么就只解析前面是数字的部分字符
console.log(parseInt('22e3'));//22
// 如果字符串中第一个字符就不是数字,那么返回NaN
console.log(parseInt('e21'));//NaN
| | —- |
radix / 数字系统的基数
一、数字系统的基数:如2是二进制的基数,10是十进制的基数。所以radix指定了数字系统的基数,也可以说是指定了哪一种进制。
二、parseInt()函数具有可选的第二个参数。它指定了使用哪一种进制,因此parseInt还可以解析十六进制数字、二进制数字等的字符串(2 ≤ radix ≤ 36)
radix取值
省略radix参数时,默认为10进制
console.log(parseInt(99));//99
radix取值范围:2 <= radix <=36
alert( parseInt('0xff', 16) ); // 255 alert( parseInt('ff', 16) ); // 255,没有 0x 仍然有效 alert( parseInt('2n9c', 36) ); // 123456
radix参数小于2或者大于36的时候,都会返回NaN
console.log(parseInt(1,1));//NaN ,因为第二个参数是1表示1进制<2,所以错误 console.log(parseInt(1,2));//1,因为表示二进制 =2,在范围内
radix参数使用0的时候也是使用十进制
console.log(parseInt(99,0));//99
如果第一个参数前缀使用0x/0X,则表示使用16进制
console.log(parseInt(0x99)); //153=16*9+9 console.log(parseInt(0x99,10)); //如果第一个参数使用了0x表示十六进制,那么第二个参数设置了值也无效
返回值
一、返回解析后的整数值。 如果被解析参数的第一个字符无法被转化成数值类型,则返回 NaN。
二、如果 parseInt 遇到了不属于radix参数所指定的基数中的字符那么该字符和其后的字符都将被忽略。接着返回已经解析的整数部分。
| 【示例】下面代码输出结果为```javascript var arr = [1, 2, 3, 2, 5]; console.log(arr.map(parseInt));
**答案**:[1, NaN, NaN, 2, NaN]<br />**解析**:<br />1、arr.map方法就是对于数组arr里面的每一项都去使用方法里面的函数,最后返回新数组<br />2、map标准语句```javascript
arr.map(function(item, index, arr){
.....
});
3、此时原题可转换为```javascript var arr = [1, 2, 3, 2, 5]; arr.map((value, index, arr) => parseInt(value, index));
// 实际上就是 parseInt(1,0); // 1。因为0表示十进制 parseInt(2,1); // NaN。进制1<2,所以错啦! parseInt(3,2); // NaN。2进制,但是3不在0——2范围内(3应该改为11),所以不符合2进制要求 parseInt(2,3); // 2。符合,因为三进制是0-3,而2在范围内 parseInt(5,4); // NaN。4进制不包括5,所以NaN ``` | | —- |
【示例】parseInt('52px'); 返回什么?答案: 52 解析:字符串’52px’会被parseInt()解析为52,因为没有传递第二个参数radix,所以默认按照10进制进行解析,而字符’p’不在10进制内,所以字符’p’和后面的字符全部被忽略,直接返回数字52 |
---|
⭐️ 【示例】parseInt(1/0, 19); 返回什么?答案:18 解析:1/0运算结果是“无穷”,在JavaScript中为Infinity,而这个Infinity转换为字符串则为’Infinity’,第一个字符是’I’,在以19为基数时他的值为18。第二个字符‘n’不是一个有效的数字字符,所以除第一个字符外,后面的字符全部被忽略,所以最后就返回了18。 |
---|