一、parseInt() 函数解析字符串参数,并返回指定的基数(基础数学中的数制)的整数。
二、parseInt只能返回一个整数,所以使用它会丢失小数部分。

| 【示例】```javascript alert( parseInt(‘100px’) ); // 100 alert( parseInt(‘12.3’) ); // 12,只有整数部分被返回了

  1. |
  2. | --- |
  3. <a name="YRQL4"></a>
  4. # 语法
  5. `parseInt(str, radix) `
  6. <a name="ktszZ"></a>
  7. ## 参数
  8. <a name="R6yTw"></a>
  9. ### str
  10. 一、str字符串只会被解析从第一个字符开始直到不是数字的字符部分
  11. | 【示例】```javascript
  12. // 当字符串中间存在非数字,那么就只解析前面是数字的部分字符
  13. console.log(parseInt('22e3'));//22
  14. // 如果字符串中第一个字符就不是数字,那么返回NaN
  15. 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。