https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt
概述
parseInt() 函数将给定的字符串以指定基数(radix/base)解析成为整数。
语法
parseInt(string, radix);
参数
string
- 要被解析的值。如果参数不是一个字符串,则将其转换为字符串。字符串开头的空白符将会被忽略。
radix
- 一个2到36之间的整数值,用于指定转换中采用的基数。比如参数"10"表示使用我们通常使用的十进制数值系统。总是指定该参数可以消除阅读该代码时的困惑并且保证转换结果可预测。当忽略该参数时,不同的实现环境可能产生不同的结果。
描述
parseInt
*函数,没有与任何对象关联。
parseInt
函数将第一个参数(字符串)解析并试图返回一个整数或者NaN
(Not a Number)。如果结果不是NaN
,那么返回值是把第一个参数看作是radix参数指定的进制下的数,然后把它转换成十进制的整数。例如:radix
参数为10 将会把第一个参数看作是一个数的十进制表示,8 对应八进制,16 对应十六进制,等等。基数大于 10 时,用字母表中的字母来表示大于 9 的数字。例如十六进制中,使用 A 到 F。
如果 parseInt
遇到了不属于radix
参数所指定的基数中的字符那么该字符和其后的字符都将被忽略。接着返回已经解析的整数部分。parseInt
将截取整数部分。开头和结尾的空白符允许存在,会被忽略。
在没有指定基数,或者基数为 0 的情况下,JavaScript 作如下处理:
- 如果字符串
string
以"0x"或者"0X"开头, 则基数是16 (16进制). - 如果字符串
string
以"0"开头, 基数是8(八进制)或者10(十进制),那么具体是哪个基数由实现环境决定。ECMAScript 5 规定使用10,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出radix参数的值。 - 如果字符串
string
以其它任何值开头,则基数是10 (十进制)。
如果第一个字符不能被转换成数字,parseInt
返回NaN
。
算术上, NaN
不是任何一个进制下的数。 你可以调用isNaN
来判断 parseInt
是否返回 NaN
。NaN
参与的数学运算其结果总是 NaN
。
将整型数值以特定基数转换成它的字符串值可以使用 intValue.toString(radix)
.
一个更严格的解析函数
有时采用一个更严格的方法来解析整型值很有用。此时可以使用正则表达式:
filterInt = function (value) {
if(/^(\-|\+)?([0-9]+|Infinity)$/.test(value))
return Number(value);//注意两个return
return NaN;
}
console.log(filterInt('421')); // 421
console.log(filterInt('-421')); // -421
console.log(filterInt('+421')); // 421
console.log(filterInt('Infinity')); // Infinity
console.log(filterInt('421e+0')); // NaN
console.log(filterInt('421hop')); // NaN
console.log(filterInt('hop1.61803398875')); // NaN
console.log(filterInt('1.61803398875')); // NaN