parseInt(str[, radix])
- 解析一个字符串并返回指定基数的十进制整数或者
NaN
,radix
是2-36之间的整数,表示被解析字符串的基数。parseInt('11', 2)
–>3parseInt('12',2)
---->1---->如果parseInt
遇到的字符不是指定radix
参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。parseInt
将数字截断为整数值。 允许前导和尾随空格。
- 如果
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
?- 如果第一个字符不能转换为数字,那么后面的字符都不会被解析,而被忽略掉。
console.log(parseInt("\23",2))
—NaN
- 如果第一个字符,大于等于指定radix,也被视为不能解析的字符,因此而忽略其和其后面的字符:
console.log(parseInt("23",2))
—NaN
- 指定的
radix
不在2~36之间。
- 如果第一个字符不能转换为数字,那么后面的字符都不会被解析,而被忽略掉。
console.log(parseInt('11', 2))//3
console.log(parseInt('12',2))//1
//默认radix
console.log(parseInt('0x11',0))//17
console.log(parseInt('0x11',undefined))//17
console.log(parseInt('0x11'))//17
//2.2
console.log(parseInt('011'))//11
//2.3
console.log(parseInt('8'))//8
//3-NaN
console.log(parseInt('a1',2))//NaN
console.log(parseInt('21',2))//NaN
console.log(parseInt('2',37))//NaN