JavaScript
由于JavaScript是弱类型语言,故其有强类型语言没有的隐式转换。除此之外,还可通过强制类型转换和转换函数处理转换值得类型。
1.隐式类型转换
所谓隐式类型转换,即不同类型的数据在做运算时可以进行默认的数据类型转换。
隐式转换法则
- 1.1 字符串 + 数字/布尔值/null/undefined : 非字符串转换为字符串;
- 1.2 undefined + 非字符串(null/数字/布尔值/undefined) : NaN;
- 1.3 null + 数字/布尔值 : null 转换为0,true转换为1,false转换为0;
- 1.4 布尔值 + 布尔值 : 布尔值转换为数字。
优先级排序 :字符串 > undefined > null >= 数字
2.强制类型转换
一共有三种强制类型的转换:Boolean(value);Number(value);String(value)。用这三个函数转换值,将创建一个新值,存放原始值转换后的值
2.1 Boolean()——将给定的值转换成布尔型
- 当要转换的值是 ==空字符串== / ==数字0== / ==undefined== / ==null== 四种情况之一时,返回false;否则返回true。
var aaa;
var bbb = null;
var ccc = "null";
var ddd = new Object();
Boolean(0); //false
Boolean(""); //false
Boolean(undefined); //false
Boolean(aaa); //false
Boolean(null); //false
Boolean(bbb); //false
Boolean(ccc); //true ccc是值为"null"的字符串
console.log(ddd) //{}
Boolean(ddd); //true
2.2 Number()——将给定值转换为数字
- 布尔值true被转换为1
- 布尔值false和null被转换为0
- undefined和无法被转换为数字的字符串(如"4.3.2"/"abc")被转换为NaN
var aaa;
var bbb = null;
var ccc = "null";
var ddd = new Object();
Number(true); //1
Number(false); //0
Number(aaa); //NaN
Number(undefined); //NaN
Number(bbb); //0
Number(null); //0
Number("2.1.0"); //NaN
Number("abc"); //NaN
Number("2.1abc"); //NaN
Number("2.1"); //2.1
2.3 String()——将给定值转换为字符串
- 此方法最简单,它可将任何值转换为字符串
var ddd = new Object();
String(false); //"false"
String(null); //"null"
String(undefined); //"undefined"
String(ddd); //"[object Object]"
3.转换函数
3.1 toString()
- 转换为字符串,类似于String(),但undefined和null的转换报错
var ddd = new Object();
toString(false); //"false"
toString(null); //"null"
toString(undefined); //"[object Undefined]"
toString(null); //"[object Undefined]"
toString(ddd); //"[object Undefined]"
3.2 parseInt()
parseInt("aaa"); //NaN
parseInt("123"); //123
parseInt("12aaa"); //12
parseInt("aaa12"); //NaN
parseInt("123aaa12"); //123
parseInt(null); //NaN
parseInt(undefined); //NaN
3.3 parseFloat()
parseFloat("1.23sdf"); //1.23
parseFloat("sdf1.23"); //NaN
parseFloat("2.33sdf1.23"); //2.33
parseFloat(null); //NaN
parseFloat(undefined); //NaN