【JavaScript】parseInt()与toString()

parseInt() 函数

parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数。

parseInt()一般用于数值转换,在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回 NaN;也就是说,用 parseInt()转换空字符串会返回 NaN(Number()对空字符返回 0)。如果第一个字符是数字字符,parseInt()会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。

如果字符串中的第一个字符是数字字符,parseInt()也能够识别出各种整数格式,也就是说,如果字符串以"0x"开头且后跟数字字符,就会将其当作一
个十六进制整数;如果字符串以"0"开头且后跟数字字符,则会将其当作一个八进制数来解析。

var num1 = parseInt("1234blue"); // 1234 
var num2 = parseInt(""); // NaN 
var num3 = parseInt("0xA"); // 10(十六进制数)
var num4 = parseInt(22.5); // 22 
var num5 = parseInt("070"); // 56(八进制数)
var num6 = parseInt("70"); // 70(十进制数)
var num7 = parseInt("0xf"); // 15(十六进制数)

parseInt()拥有第二个参数,转换时使用的基数(即多少进制),会把第一个参数以第二个参数的进制来表示,而返回的值则是十进制的。

var num1 = parseInt("10", 2); //2 (按二进制解析)==> 2^0*0+2^1*1=2
var num2 = parseInt("10", 8); //8 (按八进制解析)==> 8^0*0+8*^1*1=8
var num3 = parseInt("10", 10); //10 (按十进制解析)==> 10^0*0+10*^1*1=10
var num4 = parseInt("10", 16); //16 (按十六进制解析)==> 16^0*0+16*^1*1=16

toString() 方法

接下来再来看toString()方法(注意:null 和 undefined 值没有这个方法)

toString() 方法返回指定对象的字符串形式。

var value1 = 10; 
var value2 = true; 
var value3 = null; 
var value4; 
console.log(String(value1)); // "10" 
console.log(String(value2)); // "true" 
console.log(String(value3)); // "null" 
console.log(String(value4)); // "undefined" 

一般情况下,调用 toString()方法不必传递参数,但是,在调用数值的 toString()方法时,可以传递一个参数:输出数值的基数。默认情况下,toString()方法以十进制格式返回数值的字符串表示。而通过传递基数,toString()可以输出以二进制、八进制、十六进制,乃至其他任意有效进制格
式表示的字符串值。

var num = 10; 
console.log(num.toString()); // "10"  默认以十进制表示
console.log(num.toString(2)); // "1010"  以二进制表示
console.log(num.toString(8)); // "12"  以八进制表示
console.log(num.toString(10)); // "10"  以十进制表示
console.log(num.toString(16)); // "a"  以十六进制表示

总结

parseInt() 第二个参数会把第一个参数以第二个参数的进制来解析,返回十进制的值
toString() 会将数值以二进制、八进制、十六进制,乃至其他任意有效进制格式表示

var num = 6
console.log(num.toString(2),parseInt(num.toString(2),2)) // 110 6

自我理解为“互为逆运算”

发布了10 篇原创文章 · 获赞 1 · 访问量 308

猜你喜欢

转载自blog.csdn.net/AAABingBing/article/details/103857706