JavaScript === vs ==

Harshit Jindal 2023年10月12日
  1. JavaScript 中的松散相等运算符 (==)
  2. JavaScript 中的严格相等运算符 (===)
JavaScript === vs ==

比较运算符帮助我们确定两个变量是否相等或遵循指定的标准。如果比较结果良好,则返回 true;否则,它返回 false。本教程解释了比较运算符中最令人困惑的话题,并教授何时使用哪个等于运算符(=====)。

单等号 = 与双等号 == 和三等号 === 完全不同,因为它是一个赋值操作,它们是比较运算符。因此,混淆通常在 ===== 之间。

JavaScript 中的松散相等运算符 (==)

== 运算符或相等运算符也称为抽象比较运算符。之所以称为抽象,是因为它只关心变量的值而不关心变量的类型。== 运算符在将变量值相互比较之前将它们转换为相同的类型(类型强制),如果转换的操作数相等,则返回 true。由于运算符必须执行类型转换,因此它往往比 === 运算符慢一点。

现在,要了解何时使用哪个运算符,我们首先必须了解一些有关类型强制的知识。它有两种类型:

  1. 显式强制转换: 使用内置方法通过代码显式完成。例如:要将字符串 "42" 转换为数字,我们必须编写 Number("42")。这样,我们使用显式的 Number() 类型转换方法将字符串转换为数字。
  2. 隐式强制转换: 它是由语言隐式完成的。它通常在我们将两种不同类型的操作数与运算符一起使用时执行。例如:如果我们执行 1 + ""。有一个数字和一个字符串不能直接相加,所以 JavaScript 类型将数字转换为字符串,因为这是它们相加的唯一方式,并返回一个字符串 "1"
23 == '23'         // returns true
true + false == 1  // returns true
undefined ==
    null         // returns true
        [] == 0  // returns true

JavaScript 中的严格相等运算符 (===)

=== 运算符或恒等运算符也称为严格比较运算符。之所以称为严格,是因为它只有在两个操作数的类型和值都相同时才返回真。它不执行任何类型的转换;因此,它往往比 == 运算符更快。

true === true  // returns true
true === 1     // returns false

因此,选择 ===== 运算符的决定取决于类型强制。如果不熟悉类型强制,那么他应该坚持使用严格相等运算符。

作者: Harshit Jindal
Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

相关文章 - JavaScript Operator