在Javascript中,是不是建议使用==,以及如何使用===?

时间:2011-10-02 16:09:21

标签: javascript

  

可能重复:
  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)可以在大多数浏览器中使用吗?和===一起使用的其他常见案例是什么?

4 个答案:

答案 0 :(得分:5)

==的问题在于它使用类型强制,可能会产生意外结果。

几乎总是想要===!==。您可以根据需要显式更改类型。在您的示例中,将"3"写为字符串而不是将字符串转换为数字会更容易。

答案 1 :(得分:1)

永远不要说永远,但实际上,在大多数情况下,最好使用更严格的===!==运算符,因为它们会比较值和类型。

比较'68'到68不是问题,如果它匹配,它可能就是你的意思。不这样做的巨大风险尤其在于“空虚价值”。空字符串可能会被评估为false,可能会00.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