您的当前位置:首页正文

JS的undefined,null,NaN,false,0进行比较

2024-11-28 来源:个人技术集锦

特殊值进行比较

NaN,undefined,null,false与自身相比,只有NaN==NaN是false;不等是true。

然后两两相比,得出结论。> < >= <= == != === !==.注:连接运算+优先级高于比较运算符。

做实验用的模板:notepad++中查找替换

console.log("x> y 的结果是:"+(x> y ));

console.log("x< y 的结果是:"+(x< y ));

console.log("x>= y 的结果是:"+(x>= y ));

console.log("x<= y 的结果是:"+(x<= y ));

console.log("x== y 的结果是:"+(x== y ));

console.log("x!= y 的结果是:"+(x!= y ));

console.log("x===y 的结果是:"+(x===y ));

console.log("x!==y 的结果是:"+(x!==y ));

1.NaN与undefined,NaN与null都不相等

console.log("NaN==NaN的结果是:"+(NaN==NaN));//false

console.log("NaN!=NaN的结果是:"+(NaN!=NaN));//true

//结论1:NaN不与自身相等,NaN之间不存在可比性,因为它代表不是一个数,至于是什么NaN不知道。

console.log("NaN> undefined 的结果是:"+(NaN> undefined )); // false

console.log("NaN< undefined 的结果是:"+(NaN< undefined )); // false

console.log("NaN>= undefined 的结果是:"+(NaN>= undefined )); // false

console.log("NaN<= undefined 的结果是:"+(NaN<= undefined )); // false

console.log("NaN== undefined 的结果是:"+(NaN== undefined )); // false

console.log("NaN!= undefined 的结果是:"+(NaN!= undefined )); // true

console.log("NaN===undefined 的结果是:"+(NaN===undefined )); // false

console.log("NaN!==undefined 的结果是:"+(NaN!==undefined )); // true

NaN与null和false结果都是一样的,都不相等。

2.undefined与null和false相比

console.log("undefined== null 的结果是:"+(undefined== null ));//true

console.log("undefined!==null 的结果是:"+(undefined!==null ));//true

//结论:undefined与null只有在比较是否等时会强制转化为布尔型false,两个false相比是true,由于类型不一样,故不全等也是true。其它不作转化当然无法比全是false。

console.log("undefined!= false 的结果是:"+(undefined!= false ));//true

console.log("undefined!==false 的结果是:"+(undefined!==false ));//true

//结论:undefined与false是不相等的。undefined与0的比较结果与false一样的。

//undeined比较大小时转化为NaN

3.null与false相比

console.log("null> false 的结果是:"+(null> false )); //false

console.log("null< false 的结果是:"+(null< false )); //false

console.log("null>= false 的结果是:"+(null>= false )); //true

console.log("null<= false 的结果是:"+(null<= false )); //true

console.log("null== false 的结果是:"+(null== false )); //false

console.log("null!= false 的结果是:"+(null!= false )); //true

console.log("null===false 的结果是:"+(null===false )); //false

console.log("null!==false 的结果是:"+(null!==false )); //true

//结论:null与false在作相等判断时不作转化二者是不一样的。在作比较大小时二者都转化为0进 行比较。null与0的比较结果与false一样。

4.false与0

console.log("false> 0 的结果是:"+(false> 0 )); //false

console.log("false< 0 的结果是:"+(false< 0 )); //false

console.log("false>= 0 的结果是:"+(false>= 0 )); //true

console.log("false<= 0 的结果是:"+(false<= 0 )); //true

console.log("false== 0 的结果是:"+(false== 0 )); //true

console.log("false!= 0 的结果是:"+(false!= 0 )); //false

console.log("false===0 的结果是:"+(false===0 )); //false

console.log("false!==0 的结果是:"+(false!==0 )); //true

结论:false转化为0进行运算。

总的结论:比较大小时若类型不一致通过Number转化为数值进行比较,undefined为NaN,null为0,false为0,true为1。

比较相等时如果有一方是数值,另一方也转化为数值。两方都不是数值也不是布尔时强制转化为boolean进行比较,若一方是布尔另一方不作任何转化进行比较,结果都是不相等的。

 

显示全文