在 JavaScript 中的等性判断符号有以下两组
- == 和 !=
- === 和 !==
在进行 == 或 != 的判断时,为确定两个运算数是否相等,这两个运算数都会先进行类型转换,再执行比较。
== 和 != 判断规则
- null 和 null 相等。
- null 和 undefined 相等。
- undefined 和 undefined 相等。
- 在检查之前,不把 null 和 undefined 转换成其他值。
- 如果某个运算数是 NaN,== 将返回 false,!= 将返回 true。
- 如果一个运算数是 Boolean 值,将 Boolean 值转换成 Number 值后,再进行判断。
- 如果一个运算数是 String 值,另一个运算数是 Number 值,尝试将 String 值转换成 Number 值后,再进行判断。
- 如果一个运算数是 String 值,另一个运算数是 Object,尝试将 Object 转换成 String 值后,再进行判断。
- 如果一个运算数是 Number 值,另一个运算数是 Object,尝试将 Object 转换成 Number 值后,再进行判断。
- 如果两个运算数都是 Object,那么比较它们的引用值。如果两个运算数指向同一个对象,那么 == 返回 true,否则返回 false。
一些比较特殊的例子
null == null //--->>> true
null == undefined //--->>> true
undefined == undefined //--->>> true
NaN == NaN //--->>> false
5 == NaN //--->>> false
5 == '5' //--->>> true
5 == '+5' //--->>> true 字符串 '+5' 转换成数字 5
5 == '-5' //--->>> false 字符串 '-5' 转换成数字 -5
5 == '.5' //--->>> false 字符串 '.5' 转换成数字 0.5
=== 和 !== 判断规则
在进行等性判断前,不会把运算数进行类型转换。只有类型相同且值相等时返回 true。