由于Which equals operator (== vs ===) should be used in JavaScript comparisons?表示它们基本相同,但“===
”也确保类型相等,因此“==
”可能会执行类型转换。在Douglas Crockford的 JavaScript:The Good Parts 中,建议始终避免使用“==
”。但是,我想知道设计两组相等算子的原始想法是什么。
您是否看到使用“==
”实际上比使用“===
”更合适的情况?
答案 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.
}