js中的数据类型转换,一般都是将一种类型的数据转换为number,string和boolean这三种基本类型,包括显式类型转换和隐式类型转换。本章介绍基本类型到基本类型的转换,对象转换为基本类型的介绍将另开一章。
显式类型转换
a. 转换为boolean值
通过Boolean()函数,转换为布尔值,规则为:除了0,NaN,false,undefined,null,‘’ 转为false,其他的所有值都转换为true。
b. 转换为number值
转换为数值类型时,有三种方式:Number(),parseInt(),parseFloat()。其中Number()可以将任意类型转换为数值类型,而另外两个则是专门将字符串类型转换为数值。
Number()的转换规则为:
parseInt()的转换规则为:
parseFloat的转换规则为:parseFloat()的转换规则和parseInt()类似,只是会将第一个小数点当做有效值,而它会忽略掉前导的零。parseFloat同样会解析各种数据格式,但是十六进制始终返回0。
c. 转换为字符串
转换为字符串有2种方式:toString()方法和String()方法。
除了null和undefined没有toString()方法,其他的数据类型都有toString()方法,将数字类型转换为字符串时,可以传递一个参数作为基数,表示将十进制的数字转换为该基底的字符串。
String()方法可以将任意类型的数据转换为字符串,包括undefined和null。
隐式类型转换
隐式类型转换大致包括如下几类:
a. isNaN()
isNaN函数内部调用Number()函数进行数字的转换
b. ++,--,+/-(一元正负运算)
调用Number()转换为数字后再计算
c. +
加号中如果两边有一个为字符串,则转换为字符串;如何两边为数字或者布尔值,则进行加法运算,对布尔值,调用Number()方法转换为数字。
d. -,*,/,%
调用Number()转换为数字后计算
e. &&,||,!
转换为boolean类型
f. >,<,>=,<=,==,!=
根据两边的类型进行转换,两边有一个为数字或者布尔值,调用Number()转换为数字后进行数字的比较;都为为字符串,进行字符串的比较;比较特殊的情况:undefined == null,(undefined > 0,undefined < 0,undefined = 0均为false),NaN == NaN为false
网友评论