跳到主要内容

parseInt

2023年10月07日
柏拉文
越努力,越幸运

一、认识


parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,radix2-36 之间的整数,表示被解析字符串的基数。

二、语法


const num = parseInt(string, radix);
  • string: 要被解析的值。如果参数不是一个字符串,则将其转换为字符串 (使用 ToString抽象操作)。字符串开头的空白符将会被忽略。注意 string 参数有以下特点:

    • string 允许前导和尾随空格

      console.log(parseInt("  345  ")); // 345
    • string 中第一个字符如果不能转换为数字,那么 parseInt 会返回 NaN

      console.log(parseInt("a345a456")); // NaN
    • string 中的除了第一个字符外的某个字符如果不能转换为数字,那么 string 将会忽略该字符以及后续所有字符,并返回到该点为止已解析的整数值,parseInt 将数字截断为整数值

      console.log(parseInt("345a456")); // 345
  • radix: 可选值。从 236 的整数,表示进制的基数。例如指定 16 表示被解析值是十六进制数。如果超出这个范围,将返回 NaN。假如指定 0 或未指定,基数将会根据字符串的值进行推算。如果 radixundefined0 或未指定的,JavaScript 会假定以下情况:

    • 如果输入的 string0x0X(一个 0,后面是小写或大写的 X)开头,那么 radix 被假定为 16,字符串的其余部分被当做十六进制数去解析。

    • 如果输入的 string00)开头,radix 被假定为 8(八进制)或 10(十进制)。具体选择哪一个 radix 取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix

    • 如果输入的 string 以任何其他值开头,radix10 (十进制)。

三、返回值


从给定的字符串中解析出的一个整数或者 NaN。以下是返回NaN的情况:

  • 情况一、radix 小于 2 或大于 36

  • 情况二、第一个非空格字符不能转换为数字

四、对比


  • Number(value)

    • 特点一、只要参数带有无效字符就会被转换为 NaN
  • parseInt(value)

    • 特点一、parseInt() 无法识别小数点
  • parseFloat(value)

    • 特点一、parseFloat() 无法识别 0x 前缀

五、应用场景


  • 场景一、转换为十进制整数

    parseInt("4.5","") // 4

    parseInt("4.5",10) // 4
  • 场景二、转换为二进制整数

    parseInt("23", 2) // NaN , 二进制中的有效数字为 0 和 1,除了“0、1”外,其它数字都不是有效二进制数字

    parseInt("00011", 2) // 3
  • 场景三、转换为八进制整数

    parseInt("025",8) // 21
  • 场景四、转换为十六进制整数

    parseInt("025",16) // 37