可能重复:
Javascript === vs == : Does it matter which “equal” operator I use?
在Douglas Crockford的书“Javascript:The Good Parts”中,由于难以记忆的规则,建议不要使用==
。高级或经验丰富的Javascript程序员真的不使用==
或!=
吗?
如果有,那么我想我们会使用===
和!==
,但是我们如何有效地使用它们呢?最常见的情况是将字符串与数字进行比较,因此我们可以随时进行
if (Number(s) == 3) { ... } // s is a string
Number(s)
可以在大多数浏览器中使用吗?和===
一起使用的其他常见案例是什么?
答案 0 :(得分:5)
==
的问题在于它使用类型强制,可能会产生意外结果。
您几乎总是想要===
或!==
。您可以根据需要显式更改类型。在您的示例中,将"3"
写为字符串而不是将字符串转换为数字会更容易。
答案 1 :(得分:1)
永远不要说永远,但实际上,在大多数情况下,最好使用更严格的===
和!==
运算符,因为它们会比较值和类型。
比较'68'到68不是问题,如果它匹配,它可能就是你的意思。不这样做的巨大风险尤其在于“空虚价值”。空字符串可能会被评估为false,可能会0
和0.0
。为了防止难以发现错误,最好也进行严格的类型比较。
如果你想要某些东西是真或假,它应该是真或假,而不是任何其他价值。即使在允许这些其他类型的情况下,最好将其显式转换为您要比较的类型,只是为了可读性,可维护性和清晰度。在这种情况下,您明确表示您知道该值可以是另一种类型,并且允许这样做。只使用不那么严格的操作员,没有人能分辨你是忘记了还是故意做出选择。
所以是的,我会说最好总是使用严格的运算符,尽管总会有例外。
答案 2 :(得分:0)
===
'完全等于'==
不准确。
例如,
'' == false // true
0 == false // true
false == false // true
'' === false // false
0 === false // false
false === false // true
对于'falsy'或'truthy'值, ==
将返回true。 Read this了解更多信息。
许多开发人员将使用===
。单独使用===
并没有什么坏处。但在某些情况下===
不是必需的。克罗克福德在他的书中提出了很多建议。有些人跟他说过T.其他人,包括我自己,用一粒盐把它全部拿走。他有一些好处,但很多是偏好。
您应该确保确切知道==
和===
做了什么。有了这些信息,您可以决定如何使用它们,以及何时使用。
答案 3 :(得分:0)
== 运算符比较两个操作数值并返回一个布尔值。
=== 这是严格相等的运算符,只有两个操作数相等且类型相同时才返回true。
示例:
(2 == '2') //return true
(2 === '2') //return false