JavaScript中何时使用“==”而不是“===”更合适?

18
JavaScript中应使用哪个等号运算符(== vs ===)进行比较?所述,它们基本相同,除了 '===' 还确保类型相等,因此 '==' 可能执行类型转换。在Douglas Crockford的JavaScript: The Good Parts中,建议始终避免使用 '=='。但是,我想知道设计两组等式运算符的原始想法。

您是否看到过某些情况下使用 '==' 实际上比使用 '===' 更合适的情况?

4个回答

18

考虑一种情况,当您比较数字或字符串时:

if (4 === 4)
{
  // true
}

但是

if (4 == "4")
{
  // true
}

if (4 === "4")
{
  // false
}

这同样适用于对象和数组。

因此,在上述情况下,您必须作出明智的选择,是使用 == 还是 ===。


我不是在询问两者之间的区别,这个问题已经在359494中得到了回答。我想知道什么时候使用==会特别合适。 - bryantsai
5
他给了你那个——比较字符串和数字而无需手动使用 parseInt - Anonymous
我在我的答案中已经说过了,大多数情况下涉及数字和字符串,有时也涉及其他数据类型,如对象和数组。谢谢。 - Sarfraz

5
简单来说,当你希望在比较时进行类型转换时,'=='比'==='更有意义。例如,在URL查询字符串中传递数字时,可以使用if (page == 1) ...来检查当前页,即使page实际上是"1"而不是1,这在分页内容中非常有用。

3
我建议使用==没有问题,但要理解何时以及为什么使用它(即作为规则使用===,并在需要时使用==)。基本上,==只是给你提供了一种简写符号-而不是做类似于
if (vble === 0 || vble === "" || vble === null || vble === undefined || vble === false) ...

只写代码会更容易。

if (vble == false) ...

(甚至更容易编写)

如果(!vble)...

当然,除了寻找“真实”或“虚假”值之外,还有更多的例子。

实际上,您只需要了解何时以及为什么使用 == === ,我不认为没有使用 == 更好的理由......

另一个例子是使用此简写允许简写方法调用:

function func(boolOptionNotCommonlyUsed) {
  if (boolOptionNotCommonlyUsed) { //equiv to boolOptionNotCommonlyUsed == true
    //do something we rarely do
  }
  //do whatever func usually does
}

func(); //we rarely use boolOptionNotCommonlyUsed, so allow calling without "false" as an arg

0

== 用于比较两个值是否相等。

=== 用于比较两个值和数据类型是否相等。

假设我们有:

$var = 0;

if($var == false){
  // true because 0 is also read as false
}

if(!$var){
  // true because 0 is also read as false
}

if($var === false){
  // false because 0 is not the same datatype as false. (int vs bool)
}

if($var !== false){
  // true becuase 0 is not the same datatype as false. (int vs bool)
}

if($var === 0){
  // true, the value and datatype are the same.
}

你可以查看http://www.jonlee.ca/the-triple-equals-in-php/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接