js中的特数值-null-undefined-NaN
一、补充
1.js中的三大特殊数据:undefined、null、NaN
-
NaN
:非法的数值运算得到的结果-
特殊之处:
- 是一个数值型数据,但不是一个数字
- NaN不等于任何值,和任何数据都不相等,NaN不等于NaN
-
检测方法:
isNaN
(要检测的数据)- true:检测是否为NaN或是否能转为NaN
- false:检测结果不是NaN或不能转成NaN
// 计算机认为每一个NaN都是非法运算的结果,每一个NaN的来源都不一样 console.log(NaN == NaN); //false // 非法的运算会得到NaN,但不知道这个运算是否为非法运算 // js提供了一个检测是否为NaN的方法 console.log(isNaN(NaN)); //true console.log(isNaN(123)); //false console.log(isNaN("hello")); //true // 还会发生隐式类型的转换 // 场景:是否可以转为数值,"hello"无法转为数值,所以是非法运算结果为true console.log(isNaN("123")); //false // 可以转为数值,数值不是NaN,所以结果为false console.log(isNaN("123hello")); //true //是严格转换 console.log(isNaN("123.4")); //false //可以识别小数点,可以转为数值
-
-
undefined
- 未赋值 类型是undefinednull
- 空 类型是object对象- 特殊1:undefined 和 null 在关系类型运算时,两边都被隐式类型转换成了一致的数据 0/false
- 特殊点2:undefined被转换为NaN,null被转换为0
-
如何判断三大特殊的值分别是谁
NaN
可以使用isNaN
判断- isNaN(要判断的值)
//隐式转换 console.log(undefined == null); //true console.log(undefined == NaN); //false,有NaN肯定不相等 console.log(null == NaN); //false // 三个等号必然不相等,类型肯定不相等 //强制转换 console.log(Number(undefined)); //NaN console.log(Number(null)); //0 // 特殊点1:undefined 和 null 在关系类型运算时,两边都被隐式类型转换成了一致的数据 0/false // 特殊点2:undefined被转换为NaN,null被转换为0 console.log(undefined == 0); //f console.log(null == 0); //f // 如何判断是哪一个特殊的值 // 判断undefined和null: // typeof() //typeof undefined得到undefined //typeof null得到object // 如何判断null和真正的对象 // 真正的对象的明显标志:任何两个对象都不相等,只要相等了,就是只有一个对象 // null是可以直接等于自己null // console.log(null == null); //t
undefined
可以使用typeof
判断- typeof 要判断的值或变量
null
需要配合typeof
和关系运算符判断- typeof 要判断的值或变量 === "object"
- 还需要要判断的值或变量 == null