parseInt
一、认识
parseInt(string, radix)
解析一个字符串并返回指定基数的十进制整数,radix
是 2-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
: 可选值。从2
到36
的整数,表示进制的基数。例如指定16
表示被解析值是十六进制数。如果超出这个范围,将返回NaN
。假如指定0
或未指定,基数将会根据字符串的值进行推算。如果radix
是undefined
、0
或未指定的,JavaScript
会假定以下情况:-
如果输入的
string
以0x
或0X
(一个0
,后面是小写或大写的X
)开头,那么radix
被假定为16
,字符串的其余部分被当做十六进制数去解析。 -
如果输入的
string
以0
(0
)开头,radix
被假定为8
(八进制)或10
(十进制)。具体选择哪一个radix
取决于实现。ECMAScript 5
澄清了应该使用10
(十进制),但不是所有的浏览器都支持。因此,在使用parseInt
时,一定要指定一个radix
。 -
如果输入的
string
以任何其他值开头,radix
是10
(十进制)。
-
三、返回值
从给定的字符串中解析出的一个整数或者 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