JavaScript的数据类型主要有:undefined,boolean,null,number,string,object,function等 。JS是弱类型,由数据来决定变量的数据类型是什么,不同的数据类型,在运算中会发生不同的类型转换,以下从隐式类型转换和显示类型转换进行介绍。
隐式类型转换
——在JS运算中,根据不同的场景和规则,自动进行转换。
场景一:算数运算符
规则:
1、加号(+):(1)数学中的加法运算;(2)字符串的拼接,当运算符两边出现一个字符时,会将数值作为字符处理
var a= 1 + 1; //结果为2
var a= "1" + 1; //结果为11
var a= "hello" + 1; //结果为hello1
2、(- * / %):只有数学运算的意义。
(1)当运算符两边出现一个数字字符时,会将字符作为数值处理
var a= "3" - 1; //结果为2
var a= "3" * 1; //结果为3
var a= "3" / 1; //结果为3
var a= "3" % 1; //结果为0
(2)当运算符两边出现一个正常字符时,如"hello" + 2,属于非法的数值运算,结果为NaN
var a= "hello" - 2; //NaN
var a= "hello" * 2; //NaN
var a= "hello" / 2; //NaN
var a= "hello" % 2; //NaN
场景二:关系运算符
规则:
(1)当有一个数值和一个字符时,会转成数值;
"2" > 1; //true;
(2)两个都是字符就没有隐式类型转换,会逐位比较,得出结果,停止比较;
"12" > "13"; //false;
(2)全等===,没有隐式转换,需要值和类型一致才为true。
"2" == 2; //true;
"2" === 2; //false;
场景三:其他转boolean
规则:
(1)数值型:非0为true,0为false;
(2)字符型:非空字符为true,空字符为false(区分空格和空字符);
(3)对象性:除了null,所有对象为true;
(4)undefined、NaN、null:为false;
场景四:其他转数值
规则:
(1)布尔转数值:true为1,false为0;
(2)null转数值:null为0;
(3)undefined、NaN为NaN;
强制(显式)类型转换
——将一种数据类型强制转换成另一种类型的数据,
字符转数值
parseInt();
从左向右一次转换,能转则转,不能转停止;如果第一位就不能转,直接NaN;不识别小数点。
parseFloat();
等同于parseInt,同时可以识别小数点
Math.round();
严格转换,不允许出现任何非数字的字符,否则NaN;取最接近的整数
Number();
严格转换,不允许出现任何非数字的字符,否则NaN;直接转换
数值转字符
.toString();
相当于数值直接套了一个引号
var num = 1;
var str = num.toString(); //"1"
.toFixed(n);
加引号的同时,四舍五入保留n位小数,不够,补零
var num = 2;
var str = num.toFixed( 2); //"2.00"