JavaScript 中 === 与 == 的对比

2024-05-21 15:32:13 浏览数 (4)

前言

在 JavaScript 中,===== 都是进行相等性比较的运算符,但它们有一些重要的区别:

  • === 是严格相等运算符,它要求两个值的类型和值都相同。
  • == 是相等运算符,它只要求两个值的值相同,不考虑类型。

===

=== 是 JavaScript 中的严格相等运算符,它用于比较两个值是否完全相等。

在 JavaScript 中,两个值相等的条件是:

  • 两个值的类型相同。
  • 两个值的值相同。
代码语言:javascript复制
console.log(1 === 1);  // true
console.log('hello' === 'hello');  // true
console.log(1 === '1');  // false
  1. 两个值的类型和值都相同,返回true
  2. 如果两个值的类型不同,即使它们的值相同,也会返回 false

==

如果你希望比较两个值是否相等,但不考虑它们的类型,可以使用双等号 ==== 是相等运算符,它只要求两个值的值相同,不考虑类型。

代码语言:javascript复制
console.log(1 === '1');  // false
console.log(1 == '1');  // true

在某些情况下,使用 == 会更方便。例如,你可能希望对数字和布尔值进行比较,此时可以使用 ==

代码语言:javascript复制
console.log(1 == true);  // true

上面的代码会输出 true,因为 1true 被视为相等。

总结

  1. == 运算符中,0和false是相等的。因为0 被自动转换成了布尔类型
  2. == 运算符中,1和true是相等的。同样因为1 被自动转换成了布尔类型
  3. == 运算符中,undefined和null是相等的。
  4. === 运算符中,undefined和null是不相等的。

在使用相等运算符时,要根据实际情况选择是使用 === 还是 ==。一般来说,使用双等号进行比较常常会导致意想不到的结果,因此在实际开发中,建议尽量使用严格相等运算符 ===,因为它更严谨,能够避免意想不到的结果。

另外,如果对比对象是不是相同,可以使用Object.is()

=== 的区别在于,Object.is() 会比较两个值是否为同一个对象,并且也会考虑特殊的数值(如 NaN)是否相等。

代码语言:javascript复制
console.log(Object.is(NaN, NaN));  // true
console.log(Object.is(-0, 0));  // false

0 人点赞