null undefined false 值转换的比较

Posted zhongfang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了null undefined false 值转换的比较相关的知识,希望对你有一定的参考价值。

javascript权威指南关于等号进行类型转换中的内容:
1、如果两个操作数的类型相同,则 ===== 的比较规则相同。
2、如果两个操作数类型不相同,==相等操作符可能会认为他们相等。检测相等会遵守如下规则和类型转换:
???? a、如果一个值是null,另外一个是undefined,则他们相等;
???? b、如果一个值是数字,另一个是字符串,先将字符串转换成数字,然后使用转换后的值进行比较;
???? c、如果一个值是true,则将其转换为1在进行比较。如果其中一个值是false,则将其转换0再进行比较;
???? d、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,在进行比较。对象通过toString()或者valueOf()方法转换为原始值。js语言核心的内置首先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只使用toString()转换。
???? ???? 注:nullundefined没有这两种方法
???? e、其他不同类型之间的比较均不相等。

解析 console.log(null == 0) 值为false
解析 console.log(false == undefined) 值为false
解析 console.log(null == false) 值为false
因为false会首先转换为0,而null和undefined都不带有任何方法,无法进行类型转换,所以不成立了,这也是为什么null ==0为 false,在JavaScript高级程序设计, p52中看到里面有这么一句“要比较相等性之前,不能将null和undefined转换成其他任何值。”

以上是关于null undefined false 值转换的比较的主要内容,如果未能解决你的问题,请参考以下文章

js null undefined 真的等于false吗

常见问题

null 和 undefined 不一致的比较

null 和 undefined 区别

js undefined 与空字符串怎么比较

在js中if条件为null/undefined/0/NaN/""表达式时,统统被解释为false,此外均为true