== 与 === 区别以及使用场景
1. == 与 === 有什么区别
== 会进行类型转换
- 如果操作符两端都是简单类型,字符串和布尔值都会转成数值再比较。
- 简单类型与引用类型比较,对象转成其原始类型的值(
valueOf())再比较。 - 两端都是引用类型,比较是否指向同一个对象。
null与undefined相等(null == undefined→true)。- 等号两边存在
NaN即为false。
=== 不进行类型转换
undefined === undefined; // true
null === null; // true
2. 二者的使用场景
只有一种推荐使用 == 的场景:判断对象属性是否为 null 或 undefined。
const obj = {};
if (obj.x == null) { // true,相当于 === null || === undefined
console.log('1');
}
等价写法:
if (obj.x === null || obj.x === undefined) {
// ...
}
除了上述场景,一律使用
===。它语义清晰、没有隐式转换,更安全也更易调试。
来源整理自:我的有道云笔记



