1、NaN
概念:非法的数值运算得到的结果特殊点:
是一个数值型的数据,但不是一个数字NaN不等于任何值(包括它本身),和任何数据都不相等
console
.log(typeof NaN);
console
.log(NaN == NaN);
【注】计算机认为每一个NaN都是非法运算的结果,每一个NaN的来源都不一样,所以不相等。
检测方法:isNaN()
隐式类型转换,将数据转成数值,严格转换,能识别小数点
console
.log(isNaN(NaN));
console
.log(isNaN('hello'));
console
.log(isNaN('123'));
console
.log(isNaN('12a3'));
console
.log(isNaN('12.3'));
2、undefined
概念:未赋值特殊点:
undefined在null关系运算符两边隐式转换后,得到了一致的数据:false 或 0undefined被Number( )转成NaN
console
.log(undefined
== null);
console
.log(Number(undefined
));
检测方法:typeof
var b
= undefined
;
console
.log(typeof b
=== "undefined");
3、null
概念:空,null的数据类型是对象,但不是空对象,就是空特殊点:
undefined在null关系运算符两边隐式转换后,得到了一致的数据:false 或 0null被number转成0
console
.log(undefined
== null);
console
.log(Number(null));
检测方法:检测null需要配合typeof和关系运算符进行判断,需要满足以下两个条件
首先判断该数据是否是对象类型:typeof val === "object"且,判断该数据是否是null类型:val == null
var o
= null;
if(typeof o
=== "object" && o
== null){
console
.log("o是null");
}
最后给大家拓展一下:如何区分真正的对象和null
真正的对象的标志:任何两个对象都不相等,只要相等了,那么就是一个但是null是可以等于null的
也就是说,null和对象是不相等的
console
.log(null == {});