📜  JavaScript 中 == 和 ===运算符的区别(1)

📅  最后修改于: 2023-12-03 15:31:40.160000             🧑  作者: Mango

JavaScript 中 == 和 === 运算符的区别

在 JavaScript 中,有两个用于判断相等性的运算符,分别为双等号(==)和三等号(===)。它们的区别如下:

双等号 (==)

双等号运算符会尝试将左侧和右侧的操作数进行类型转换,以便让它们具有相同的类型,然后再进行相等性比较。如果两个操作数类型不同,则会进行类型转换。对于某些类型的操作数,类型转换规则如下:

  1. 如果其中一个操作数为布尔值,则将其转换为数字,false 转换为 0,true 转换为 1,然后进行比较。
  2. 如果其中一个操作数为字符串,另一个操作数为数字,则将字符串转换为数字,然后进行比较。
  3. 如果其中一个操作数为对象,另一个操作数为字符串或数字,则将对象转换为原始值,然后进行比较。

基于以上类型转换规则,双等号运算符可能会得到一些奇怪的结果。例如:

console.log(0 == '');          // true
console.log(1 == true);        // true
console.log(1 == '1');         // true
console.log(null == undefined) // true
三等号 (===)

三等号运算符会先检查左侧和右侧的操作数数据类型是否相同,如果不同则返回 false,如果相同则继续进行相等性比较。如果两个操作数数据类型不同,则三等号比较不会进行类型转换。

console.log(0 === '');         // false
console.log(1 === true);       // false
console.log(1 === '1');        // false
console.log(null === undefined)// false

因此,建议在 JavaScript 中尽量使用三等号运算符(比双等号更严格),以避免因类型转换而导致的奇怪问题。

总结

JavaScript 中,双等号(==)运算符会进行类型转换,而三等号(===)运算符不会进行类型转换,建议使用三等号运算符以避免类型转换导致的问题。