最近利用空闲的时间,回顾了一下JS基础的一些知识,发现关系运算符跟相等运算符在针对null,undefined这两个特殊数据类型时,所呈现的结果都不一样。
//关系运算符下
null >= 0 //true
undefined >= 0 //false
//相等运算符下
null == 0 //false
undefined == 0 //false
我们来进行对比一下发现:
//Number(null) //0,即0 >= 0 --true
//Numert(undefined) //NaN,即NaN >=0 --false
null >= null //Number(null) >= Number(null) 即 0>=0,true!
undefined >= undefined //Number(undefined) >= Number(undefined) 即 NaN>=NaN,false!(注意:NaN不等于NaN)
null == undefined //true
null == null //true
undefined == undefined //true
null == 0 //false
undefined == 0 //false
在关系运算符中,null,undefined会被Number()强制转换成数字类型;
在相等运算符中,null,undefined则不会转化为数字类型,而是经过特殊处理后转化为false(当然,除了与自身对比,或者是null与undefined对比,即都为true)。