数据类型转换
在程序的运行过程中变量的值是很容易发生改变的,而在值进行变化的时候它的数据类型也很容易发生改变,我们把这种数据类型的变化叫做:数据类型转换。
typeof 判断数据类型
console.log(typeof "aaa"); //string
console.log(typeof 123); //number
console.log(typeof true); //boolean
typeof运算符的简单使用就是直接加在想要判断的变量前边,但是这里有两个类型需要注意
console.log(typeof a); // 因为没有赋值,所以它是undefined
var b=null
console.log(typeof b); // b的类型是object
强制转换
在设计程序的时候对于收集来的数据希望是指定的类型但是又不能完全确定得到的结果就是想要的,所以我们一般都会进行强制数据类型转换。
- 转换为:string
String() 强制转换为字符串
// String()函数可以将任何数据转换为string类型
String(10);// '10'
String(NaN);// 'NaN'
String(null);// 'null'
String(undefined);// 'undefined'
String(true);// 'true'
toString()
toString()函数可以将除了null/undefined之外的任何数据转换为string类型
var num = 10;
num.toString();// '10'
var flag = true;
flag.toString();// 'true'
- 转换为:number
将得到的数据转换为number类型我们需要以下三个方法:
- Number()
如果内容可以转换成数字,则返回对应的数字(整数或小数)
如果内容不可以转换成数字,则返回NaN
如果内容为空,则返回0
Number('10');// 10
Number('10.12');// 10.12
Number('10abc');// NaN
Number('abc102');// NaN
Number('hello');// NaN
Number(true);// 1
Number(false);// 0
Number();// 0
Number('');// 0
- parseInt()
将内容转换成整数(直接去掉小数)
parseInt('10');// 10
parseInt('10.12');// 10
parseInt('10abc');// 10
parseInt('abc102');// NaN
parseInt('hello');// NaN
parseInt(true);// NaN
parseInt(false);// NaN
parseInt();// NaN
parseInt('');// NaN
- parseFloat() 将内容转换成小数
parseFloat('10');// 10
parseFloat('10.12');// 10.12
parseFloat('10abc');// 10
parseFloat('abc102');// NaN
parseFloat('hello');// NaN
parseFloat(true);// NaN
parseFloat(false);// NaN
parseFloat();// NaN
parseFloat('');// NaN
-
转换为:boolean
Boolean()false、0、NaN、Undefined、null会被转换成false
“”空字符串会被转换成false
其它的都会被转成true(任何非空字符串都会被转换为true)
Boolean(0);// false
Boolean(NaN);// false
Boolean(undefined);// false
Boolean(null);// false
Boolean('');// false
Boolean('das');// true
Boolean(1);// true
Boolean(' ');// true
Boolean('0');// true
注意:Boolean值在内存中true为1,false为0
隐式转换
数据类型转换分为隐式类型转换和显式类型转换(强制转换)
隐式类型是程序内部自动完成的。
当数据类型不相同时,做数据的运算,就会自动将两端的数据转换为相同类型然后运算,这是隐式转换。
隐式转换遵从与 String() Number() Boolean()
转换为:string
任何数据是字符串相加都是字符串的拼接操作,得到的结果也都是字符串。
10+'hello';// '10hello'
''+100;// '100'
NaN+'haha';// NaNhaha
转换为:number
对数字类型的自动转换我们可以使用:
直接在要转换的内容前加上”+”;
可以使用-、*、/、%、>、<等将字符串转换成number
+'10';// 10
+'hello';// NaN
+'';// 0
+' ';// 0
+true;// 1
10-'5';// 5
10*'3';// 30
10/'2';// 5
10>'3';// true
9>'19';// false
转换为:boolean
!12;// false
!1;// false
!'hello';// false
!!'hello';// true
!!123;// true