一、类型转换的类别
分为显示和隐式两种。
这篇主要讲显示的类型转化。
二、显示类型转化
所谓的显示类型转化,无非就是使用三个函数去完成类型的转化:
Nunber、String、Boolean函数
1.Nunber函数
原始类型的转换
1.数值,要转化的是Number 123,那么返回的也是数值123
var number =Number(123);
2.字符串
var string =Nunber('123');
var string2 =Nunber('a123');
var string3 =Nunber('');
分为三种情况,第一种是输入纯数字的字符串,则会转化为相应的数值。
第二种是输入无法识别为数值的字符串,返回NAN。
第三种是输入空字符串,返回0
3.布尔值
var boolean1 = Nunber(true);//1
var boolean2 = Nunber(false)//2
4.输入的是undefined,返回NAN
5.输入的是null,返回0
对象类型的转换
简单的将是分三种情况:
比如Number({a:1});
1.首先会调用对象的valueOf()方法,如果返回的是原始类型,再调用Number()转换。
2.如果valueOf()方法返回的是复合类型的值,会继续调用toString()方法,如果返回原始类型,再调用Number()方法。
如果toString()方法返回的还是复合类型的值,就会报错。
例子中传入的是一个对象{a:1}
那么首先使用{a:1}.valueOf() //返回{a:1}对象本身
然后再用{a:1}.toString() //返回字符串[object Object],然后对该字符串进行Number方法,返回NAN
2.string函数
对于原始类型
1.Number值,转换为对应的字符串
var string1 = String(123) //"123"
2.字符串,还是原来的值。
3.布尔值
String(true) //"true"
String(false) //"false"
4.undefined //"undefined"
5.null //"null"
对于对象类型的转换
比如String({a:1});
1.首先会调用对象的toString()方法,如果返回的是原始类型,再调用String()转换。
2.如果toString()方法返回的是复合类型的值,会继续调用valueOf()方法,如果返回原始类型,再调用Stringr()方法。
如果valueOf()方法返回的还是复合类型的值,就会报错。
比如例子中传入的是对象{a:1}
先用toString()方法 //返回"[object Object]"字符串,是原始类型。
然后会调用String("[object Object]")
3.Boolean函数转换
Boolean函数转换只有两种情况,一个返回true,一个返回false。
一下情况返回false,其他的情况一律返回true
1.undefined
2.null
3.-0
4.+0
5.空字符串''
6.NAN