ToString

其他类型值转化为字符串类型的值通常使用String()或者toString()方法

基本类型

基本类型的字符串转化规则为:null转化为"null",undefined转化为"undefined",true转化为"true",数字遵循通用规则。注意除了null和undefined的任何值都具有toString方法。
Number类定义的toString()方法可以接受表示转换基数的可选参数,如果不指定此参数,转换规则将是基于十进进制。同样,也可以将数字转换为其他进制数,如:

var num = 20;
console.log(num.toString(2)) //转换结果"10100"
console.log(num.toString(8)) //转换结果"24"
console.log(num.toString(16))//转换结果"14"

对象类型

js中对象到字符串的转换经过了如下步骤:

  1. 如果对象具有toString()方法,则调用这个方法。如果它返回一个基本类型值,js将这个值转换为字符串,并返回这个字符串。

  2. 如果对象没有toString()方法,或者这个方法返回的不是一个基本类型值,那么js将调用valueOf()方法。如果存在这个方法,则调用,如果返回值是基本类型值,转换为字符串并返回

  3. 否则,js无法从toString()或valueOf()获得一个基本类型值,此时将会抛出类型错误异常

例如:

console.log([1].toString()) //转换结果"1"
console.log(({x:1}).toString()) //转换结果[object Object]
console.log(({x:1}).valueOf())  //转换结果"{ x: 1 }"

ToNumber

其他类型值转化为字符串类型的值通常使用Number()、parseInt()、parseFloat方法

基本类型

基本类型的数字转化规则为:null转化为0,undefined转化为NaN,true转化为1,fale转化0,字符串遵循通用规则,处理失败时返回NaN。
通过Number()传入一个字符,它会试图将其转换为一个整数或者浮点数的直接量,这个方法只能基于十进制进行转换,并且不能出现非法的尾随字符。
parseInt()函数和parseFloat()函数更加灵活,parseInt()只解析整数,可以传递第二个参数作为转换基数,parseFloat()可以解析整数和浮点数,parseInt()和parseFloat()都会跳过前导空格,尽可能解析更多数值字符,并忽略后面内容。
如果第一个非空格字符是非法的数字直接量,将返回NaN,例如:

console.log(parseInt('11',2)) //转换结果3
console.log(parseFloat('0.1')) //转换结果0.1
console.log(parseInt('a12')) //转换结果NaN
console.log(parseFloat('  4.2aa')) //转换结果4.2

对象类型

js对象转数字的过程和对象转字符串过程类似,只是它会首先尝试使用valueOf()方法:

  1. 如果对象具有valueOf()方法,后者返回一个基本类型值,则js将这个基本类型值转换为数字并返回

  2. 否则,如果对象具有toString()方法,后者返回一个基本类型值,则js将这个基本类型值转换为数字并返回

  3. 否则,将抛出类型错误异常

例如:

console.log(Number([])) //转换结果0
console.log([].valueOf()) //转换结果[]
console.log([].toString()) //转换结果""

ToBoolean

假值列表:undefined、null、false、+0、-0、NaN、""
假值列表以为的值都是真值。例如:

var a = [];
var b = {};
var c = function () {};
console.log(Boolean( a && b && c)) //true

以上内容是个人的一点总结,如果有错误或不严谨的地方,欢迎批评指正,如果喜欢,欢迎点赞收藏


william
2.7k 声望826 粉丝

love and share