前言
在 JavaScript 中,=== 和 == 都是进行相等性比较的运算符,但它们有一些重要的区别:
===是严格相等运算符,它要求两个值的类型和值都相同。==是相等运算符,它只要求两个值的值相同,不考虑类型。
===
=== 是 JavaScript 中的严格相等运算符,它用于比较两个值是否完全相等。
在 JavaScript 中,两个值相等的条件是:
- 两个值的类型相同。
- 两个值的值相同。
console.log(1 === 1); // true
console.log('hello' === 'hello'); // true
console.log(1 === '1'); // false- 两个值的类型和值都相同,返回
true - 如果两个值的类型不同,即使它们的值相同,也会返回
false。
==
如果你希望比较两个值是否相等,但不考虑它们的类型,可以使用双等号 ==。 == 是相等运算符,它只要求两个值的值相同,不考虑类型。
console.log(1 === '1'); // false
console.log(1 == '1'); // true在某些情况下,使用 == 会更方便。例如,你可能希望对数字和布尔值进行比较,此时可以使用 ==。
console.log(1 == true); // true上面的代码会输出 true,因为 1 和 true 被视为相等。
总结

- 在
==运算符中,0和false是相等的。因为0被自动转换成了布尔类型 - 在
==运算符中,1和true是相等的。同样因为1被自动转换成了布尔类型 - 在
==运算符中,undefined和null是相等的。 - 在
===运算符中,undefined和null是不相等的。
在使用相等运算符时,要根据实际情况选择是使用 === 还是 ==。一般来说,使用双等号进行比较常常会导致意想不到的结果,因此在实际开发中,建议尽量使用严格相等运算符 ===,因为它更严谨,能够避免意想不到的结果。
另外,如果对比对象是不是相同,可以使用Object.is()。
与 === 的区别在于,Object.is() 会比较两个值是否为同一个对象,并且也会考虑特殊的数值(如 NaN)是否相等。
console.log(Object.is(NaN, NaN)); // true
console.log(Object.is(-0, 0)); // false


