解惑parseInt

390 阅读1分钟
parseInt() 函数可解析一个字符串,并返回一个整数


语法

parseInt(string, radix)


参数描述
string必需。要被解析的字符串。
radix

可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。


注:当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数:如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

实例

console.log(parseInt("20"))
//20

console.log(parseInt("0x12"))
//18
16进制: 1*16 + 2 = 18

console.log(parseInt("29",10))
//29
10进制 2*10 + 9 = 29

console.log(parseInt("19",37))
// NaN
console.log(parseInt("19",1))
// NaN
不再2-36范围

console.log([010,"10","10","10"].map(parseInt))
// [8, NaN, 2, 3]

等同于

        var arr1 = [010,"10","10","10"];
	arr1.map(function(item,index,arr1){
	    return parseInt(item,index)
	})
        //第1次调用
	console.log(parseInt(010,0))//未定:返回 10 或 8
        //第2次调用
	console.log(parseInt(10,1)) //NaN
        //第3次调用
	console.log(parseInt(10,2)) // 2
        //第4次调用
	console.log(parseInt(10,3)) //3

console.log(parseInt("321x123"))
//321