【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

自我理解为 互为逆运算

posted @ 2020-04-12 11:26  [ABing]  阅读(267)  评论(0编辑  收藏  举报