数据类型
数据类型分为两大类:基本数据类型和复杂数据类型
基本数据类型:number string boolean undefined null
复杂数据类型:object
1. number
该数据类型包含整点型和浮点型,还有NaN(not a number),顾名思义,它代表的意思是返回的不是一个数字
看下面的例子
var b='aaa';
console.log(parseInt(b)) //结果为NaN
console.log(Number(b)) //结果为NaN
var c='123aaa'
console.log(parseInt(c)) //结果为123
console.log(Number(c)) //结果为NaN
这里需要了解一下parseInt和Number的转换原理
parseInt:将字符串转换为数字,直接截取小数点前面的整数,不会四舍五入
原理:从左到右一个个去解析,当不是数字的时候就停止解析,如123aaa会解析为123,类型为number,但是如果aaa123,解析后会是NaN,但数据类型依然是number。
Number:把字符串转换为数字number,可以保留一个小数点,先获取整个要转换的内容,再进行解析,如果不是数字则不进行解析,如123aaa,转换后的数据类型是number,但是转换结果为NaN。
parsefloat:把字符串转换为浮点number,如123.11,转换后的结果为123.11的number类型。
注意:
NaN有关的运算符操作,结果也是NaN,NaN和任何数都不相等,页包括它自己。
console.log(typeof NaN); //number
console.log(NaN == NaN); //false
2. undefined
这个数据类型只有一个值,就是undefined,它是在定义var了一个变量之后没有对其初始化的结果,即没有给变量赋值。
var b;
console.log(b) // 结果为undefined
3. boolean
这个类型有两个值,true和false,1和true相等,0和false相等,当时不全等,即类型不相同
var a='1';
var b=true;
console.log(a==b) //true
console.log(a===b) //false
var c='0';
var d=false;
console.log(c==d) //true
console.log(c===d) //false
可以利用Boolean()将其他类型的数据转换为boolean类型。
var c='123sss';
console.log(Boolean(c)) // true
var d=123;
console.log(Boolean(d)) // true
转换的规则如下:
4. string
这个类型的数据都是字符串,字符串可以由单引号(‘)或双引号(“)表示
可以通过String()和toString()方法将其他类型的数据转换为字符串。
var a=123;
console.log(a.toString()) //123
var b=undefined;
console.log(b.toString()) //报错
var c=null;
console.log(c.toString()) //报错
注意undefined和null不能用toString()方法,浏览器会报错。
5. null
null表示的是一个空指针对象,用type检查null的数据类型时,值为object。所以当你要判断一个变量是否为对象时,它可能是null。
console.log(typeof null) //object
注意:undefined值是派生自null值,所以ECMA规定他们的值相等,但是类型不相同。
console.log(undefined == null); // true
console.log(undefined===null) //false