什么时候JavaScript ==比===更有意义?

时间:2010-01-25 14:24:52

标签: javascript equality weak-typing identity-operator

由于Which equals operator (== vs ===) should be used in JavaScript comparisons?表示它们基本相同,但“===”也确保类型相等,因此“==”可能会执行类型转换。在Douglas Crockford的 JavaScript:The Good Parts 中,建议始终避免使用“==”。但是,我想知道设计两组相等算子的原始想法是什么。

您是否看到使用“==”实际上比使用“===”更合适的情况?

4 个答案:

答案 0 :(得分:17)

在比较数字或字符串时考虑一种情况:

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

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

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

这适用于对象和数组。

因此,在上述情况下,您必须明智地选择是否使用==或===

答案 1 :(得分:5)

简单的答案是,当你希望在比较期间发生类型强制时,'=='比'==='更有意义。

一个很好的例子是在URL查询字符串中传递的数字。例如,如果您有分页内容,并且page查询参数包含当前页码,那么您可以使用if (page == 1) ...检查当前页面,即使page实际上是"1" },而不是1

答案 2 :(得分:3)

我建议使用==没有问题,但要了解使用它的时间和原因(例如,使用=====时使用==目的)。从本质上讲,if (vble === 0 || vble === "" || vble === null || vble === undefined || vble === false) ... 只是给你速记符号 - 而不是像

这样的东西
if (vble == false) ...

只需编写

就容易多了
==

(甚至更容易写)

if(!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 更适合的地方......

另一个例子是使用这种速记来允许速记方法调用:

{{1}}

答案 3 :(得分: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/