对 parseInt 的理解

parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数。
如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。 parseInt 将数字截断为整数值。 允许前导和尾随空格。

参数

/**

  • string 要被解析的值。如果参数不是一个字符串,则将其转换为字符串。字符串开头的空白符将会被忽略。
  • radix(可选) 从 2 到 36,代表该进位系统的数字。例如说指定 10 就等于指定十进位。请注意,通常预设值不是 10 进位!
    */
    parseInt(string, radix)
parseInt(' 012u', 5) // 将 ' 012u' 装换成 5 进制数  
过滤前面的空格直到下一个不能转换的位置得出 012 为5进制的数, 
然后再将 012 转换成十进制 0 * 5^2^ + 1 * 5^1^ + 2 * 5^0^ = 7

parseInt(' 0125', 5) // 将 ' 0125' 装换成 5 进制数  
过滤前面的空格直到下一个不能转换的位置得出 012(5 不能提出出来的原因是:因为 五 进制只有0、1、2、3、4) 为5进制的数, 
然后再将 012 转换成十进制 0 * 5^2^ + 1 * 5^1^ + 2 * 5^0^ = 7

返回值

一个整数或者 NaN

当:
radix 小于 2 或大于 36 ,或第一个非空格字符不能转换为数字。则返回 NaN

如果 radix 是 undefined、0或未指定的,JavaScript会假定以下情况:

  • 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被解析为十六进制数。
    • parseInt('0x12', 0) '0x' 开头解析成 16 进制,1 * 16^1^ + 2 * 16^0^ = 18
  • 如果输入的 string以 "0"(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
    • parseInt('015', 0) chrom Edge 都默认为(十进制)
  • 如果输入的 string 以任何其他值开头, radix 是 10 (十进制)。
    • parseInt('512a', 0) 512
  • 如果第一个字符不能转换为数字,parseInt会返回 NaN
    • parseInt('u512a', 0) NaN

考点

[1, 2, 3].forEach((item, index) => console.log(parseInt(item, index)))


第一次循环: parseInt(1, 0) // 在谷歌中进制位传 0 默认十进制 所以结果为 1
第二次循环: parseInt(2, 1) // 进制位传 1 时,所以返回 NaN
第三次循环: parseInt(3, 2) // 因为二进制只有 0、1 ,所以返回 NaN

【笔记不易,如对您有帮助,请点赞,谢谢】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容