作为 在JavaScript比较中应使用哪个等于操作员(== VS ===)? 表明它们基本相同,除了===“还确保类型平等,因此也可以=='可能执行类型转换。在道格拉斯·克罗克福德的 JavaScript:好部分, ,建议始终避免=='。但是,我想知道设计两套平等运算符的原始想法是什么。

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

有帮助吗?

解决方案

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

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

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

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

这适用于对象和数组。

因此,在上述情况下,您必须做出明智的选择,无论是否使用==或===

其他提示

一个简单的答案是,当您 在比较期间发生的类型强制发生。

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

我建议使用没有问题 ==, ,但是要了解何时以及为什么使用它(即使用 === 通常, == 当它有目的时)。本质上, == 只是给你速记符号 - 而不是做类似的事情

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

==比较2个边的值是否相同。

===比较两个侧面的值和数据类型是否相同。

说我们有

$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/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top