企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 相等运算符(`==`)与严格相等运算符(`===`) > 原文: [https://howtodoinjava.com/typescript/equals-vs-strict-equals/](https://howtodoinjava.com/typescript/equals-vs-strict-equals/) 在 TypeScript(和 JavaScript)中,您可以与*相等运算符*(`'=='`)或*严格相等运算符*(`'==='`)比较。 两者似乎几乎相似; 但是他们比较两个值的方式却大不相同。 ## 相等运算符(`==`) 使用相等运算符比较 `x == y`(其中`x`和`y`是值)会产生`true`或`false`。 要知道的重要一点是,在比较两个值时,JavaScript 运行时将执行类型转换以使两个值都具有相同的类型。 例如,如果尝试将`string`值与`number`值进行比较,则`string`值将首先转换为`number`类型,然后进行比较。 ```java "10" == 10 //becomes ToNumber("10") === 10 ``` > 阅读更多:[完全相等比较算法](https://ecma-international.org/ecma-262/5.1/#sec-11.9.3) 让我们看一个例子。 ```java let a = 10; a == 10 //true a == '10' //true ``` 查看上面示例中的最后两个语句。 变量`'a'`如何等于`number 10`和`string '10'`。 ## 严格相等运算符(`===`) 使用相等运算符比较 `x === y`,其中`x`和`y`是值,仅在以下情况下才产生`true`或`false`: 1. `x`和`y`的类型相同 2. `x`和`y`的值相等 让我们看一个例子。 ```java let a = 10; a === 10 //true a === '10' //false ``` 在这种情况下,比较存储`number 10`的变量不等于`string 10`。 ## 使用哪个运算符? 作为建议,建议**始终使用严格相等运算符**。 这很有帮助,因为 1. 您无需在检查相等性时记住类型转换规则。 2. 如预期的那样,比较不同的数据类型应为`false`。 3. 由于上述事实,源代码不太容易出错。 将我的问题放在评论部分。 学习愉快!