目录
一、数据类型
分为原始类型和引用类型
原始类型分为数值型、字符串型、布尔型、未定义型、空
1.数值型
- 整型
8进制: 以0开头的数,例如012
16进制:以0X开头的数字,例如0Xa,不区分大小写
- 浮点型
3141.5e-1
314.15
31.415e+1
typeof //检测数据类型
number //数值型
string //字符串型
boolean //布尔型
undefined //未定义型
object //对象
2.字符串型
被引号包含的数据,引号不区分单双引号
’a‘.charCodeAt(); //查看任意一个字符的编码
3.布尔型
只有两个值,分别是true和false,代表真和假
4.未定义型
只有一个值 undefined
声明了变量未赋值,结果为 undefined
5.空
只有一个值null,后期会和对象一起使用
二、数据类型转换
分为隐式转换和强制转换
1.隐式转换
运算过程中,自动发生的转换
- 数值+字符串 -->数值转换为字符串
2+’3‘ // '23'
- 数值+布尔型 -->布尔型转换为数值
2+true // 3
2+false // 2
- 字符串+布尔型 -->布尔型转换为字符串
'2'+true // '2true'
(+)的作用:数值间的加法运算;字符串之间的拼接
var a=1,b=false,c='tedu';
console.log(a+b+c); // '1tedu'
console.log(b+c+a); // 'falsetedu1'
console.log(c+a+b); // 'tedu1false'
NaN:(Not a Number),不是一个数字,是在将数据转为数值失败的结果。
NaN和任何的值执行数学运算,结果还是NaN
所有的隐式转换为数值自动调用函数Number
2.强制转换
Number(),parseInt(),parseFloat,toString()
(1) 强制转换为数值 number()
Number(undefined) //NaN
Number('2a') //NaN
Number('2') //2
Number(true) //1
Number(false) //0
Number(null) //0
(2) 强制转换为整数 parseInt()
用于将小数和字符串转为整型,其它的数据结果都为NaN
parseInt(1.6) //1
parseInt('2.5a') //2
parseInt('a2.5') //NaN
(3) 强制转换为浮点型 parseFloat()
用于将字符串转为浮点型
parseFloat('1.8a') //1.8
parseFloat('a1.8') //NaN
parseFloat('3') //3
(4) 将数值和布尔型强制转换为字符串
var num=2;
var str=num.toString() //'2'
拓展
var n1=undefined+2; // NaN
var n2='3'-1; // 2
var n3='2'*true; //2
var n4='4'/'1'; //4
var n5='2a'*2; //NaN Not a Number
var n6=1+null; //1
console.log(NaN/2); //NaN
//Number()
//强制转换
var m1=Number(undefined); //NaN
var m2=Number('2a'); //NaN
var m3=Number('2'); //2
var m4=Number(true); //1
var m5=Number(false); //0
var m6=Number(null); //0//强制转整型
var p1=parseInt(1.6); //1
var p2=parseInt('2.5a'); //2
var p3=parseInt('a2.5'); //NaN
var p4=parseInt(true); //NaN//强制转换为浮点型
var f1=parseFloat('1.8a'); //1.8
var f2=parseFloat('a1.8'); //NaN
var f3=parseFloat('3'); //3//数值,布尔型转字符串
var num=undefined;
var str=num.toString();//'2'