在 JavaScript 中,技术上有 4 种不同的方法来比较 2 个值是否相等 。 最常见的两种方式是 == 和 === 运算符 ,也称为 抽象相等比较 和 严格相等比较 。
给定 2 个值 x 和 y,下面是 JavaScript 检查是否 x === y:
简而言之,这里是重要的细节 ===:
const obj1 = { answer: 42 };
const obj2 = { answer: 42 };
obj1 === obj2; // false
== 运算符使用更复杂的 抽象相等比较 算法来比较是否 x 和 y是平等的。 以下是简要概述:
抽象相等比较是 奇怪边缘情况 JavaScript 著名的
' ' == 0; // true
' ' == false; // true
({ valueOf: () => 42 }) == 42; // true
({ valueOf: () => 0 }) == false; // true
通常,您应该始终使用 === 而不是 == 除非你确定你知道你在做什么。 有一个简洁的功能用途 ==:检查 null 或者 undefined(所谓的 空值 )只需一次检查:
// Only true if `v === null` or `v === undefined`
v == null;
// Equivalent:
v === null || v === undefined;
检查是否 v == null 是一种更简洁的检查方法 v 严格等于 null 或者 undefined,如果您是更高级的 JavaScript 开发人员,您可以选择这样做,但始终使用 ===。
ESLint 有一个规则不允许 == 除非 右手边是 null。( eslint 组织网/docs/rules/eqeqeq)

