在说类型转换之前,先说两个个小的知识点
1、在JavaScript中所有的数据都可以转换成true或者false。这里有六个值是默认为false的。
- undefined
- null
- 0
- false
- ”
- NaN
2、操作符typeof可以检测数据的类型,其返回值一共有六种:boolean, object, string, number, undefined, function
数组和null类型的都属于object。null通常用作对象占位符,所以被浏览器归到object里面了
NaN属于number类型,虽然是非数,但也是数字的一种
下面开始讲类型转换,类型转换分为两类,一种是显式类型转换,一种是隐式类型转换
显示类型转换
1、number(mix) : 这个方法可以把其他类型的数据类型转换成数字类型
2、parseInt(string, radix) : 这个方法是将字符串转换成整型类型数字的。第二个参数是基底可选择的参数,参数string里面的数字字符串又包括其他字符串的时候,他将看到其他字符串就停下,不会继续转换后面的数字类型字符串了
· radix的范围是2-36,用法就是几进制为基底转成十进制数
var demo = 10;
parseInt(demo, 16);
//将16进制的'10',转换成十进制的16
3、parseFloat(radix) : 将字符串 转换成浮点类型的数字
parseFloat('123.2.3'); // 123.2
parseFloat('123.2abc'); // 123.2
parseFloat('123.abc'); // 123
4、toString(radix) : 转换成字符串类型
同样radix基底是可选参数,当为空的时候,仅仅代表将数据转化成字符串,当写了radix基底的时候,则代表我们要将这个数字转化成几进制的数字型字符串
undefined和null没有toString方法
5、String(mix) : 把任何数据类型转换成字符串类型
6、Boolean(mix) : 把任何数据类型转换成布尔值
隐式类型转换
1、isNaN() : 检测数据是不是非数类型,这其中包含一个隐式转换,它会先将你传的参数调用一下Number方法之后,再看看结果是不是NaN,不过这个方法可以检测NaN本身
isNaN(NaN); // true
2、算数运算符
- ++就是先将数据调用一遍Number之后,再自加一
- 同样,+、-、*、/执行之前都会进行类型转换,都转换成数字类型的在进行运算
3、逻辑对算符也会隐式调用类型转换
- && 和 ||都是先把表达式调用Boolean,换成布尔值再进行判断
- !取反操作符返回的结果也是调用Boolean方法之后的结果
- 当然也有不发生类型转换的比较运算符,如===和!==