目录
一、全等操作符【==】
当且仅当左右操作数相等时返回true,如果两个操作数不是同一个类型时,js会尝试将其转化为合适的类型,然后进行比较。
比较规则:
- 两个都为简单类型,字符串和布尔值都会转化成数值,再比较;
- 简单类型与引用类型比较,对象转化成原始类型的值,再比较;
- 两个都为引用类型,则比较它们是否指向同一个对象;
- null和undefined相等;
- 存在NaN,则返回false。
二、全等操作符【===】
当且仅当左右操作数类型相等、值相等时,才会返回true。当左右两个操作数不是同一个类型时,js不会转换类型。
let result1 = ("55" === 55); // false,不相等,因为数据类型不同
let result2 = (55 === 55); // true,相等,因为数据类型相同值也相同
三、小结
相等运算符隐藏的类型转换,会带来一些违反直觉的结果,
在比较null的情况下,我们一般使用相等操作符 ==
const obj = {};
if(obj.x == null){
console.log("1"); //执行
}
等同于以下写法:
const obj = {};
if(obj.x === null || obj.x === undefined) {
console.log("1")
}
使用相等操作符 == 更加简洁明了 ,
其他情况建议一律使用全等操作符。