Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么时候JavaScript==比==更有意义?_Javascript_Equality_Weak Typing_Identity Operator - Fatal编程技术网

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

什么时候JavaScript==比==更有意义?,javascript,equality,weak-typing,identity-operator,Javascript,Equality,Weak Typing,Identity Operator,正如所示,它们基本相同,除了“==”也确保了类型平等,因此“==”可能会执行类型转换。在Douglas Crockford的JavaScript:The Good Parts中,建议始终避免使用“=”。然而,我想知道设计两组相等运算符的最初想法是什么 您是否见过使用“=”实际上比使用“==”更合适的情况?==比较两边的值是否相同 ==比较两侧的值和数据类型是否相同 说我们有 $var = 0; if($var == false){ // true because 0 is also rea

正如所示,它们基本相同,除了“
==
”也确保了类型平等,因此“
==
”可能会执行类型转换。在Douglas Crockford的JavaScript:The Good Parts中,建议始终避免使用“
=
”。然而,我想知道设计两组相等运算符的最初想法是什么


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

==比较两边的值是否相同

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

说我们有

$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.
}

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

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

这适用于对象和数组


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

我建议使用
==
没有问题,但要理解何时以及为什么使用它(即,作为规则使用
===
,当它起作用时使用
=
)。本质上,
==
只是给你简写符号,而不是像这样做

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

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


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

我不想问两者之间的区别,答案是359494。我很想知道什么时候
==
会特别合适。@bryantsai:他给了你——不用手动使用
parseInt
将字符串与数字进行比较。我在回答中已经说过这一点,主要涉及数字和字符串,有时还涉及对象和数组等其他数据。谢谢
if (vble == false) ...
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