javascript ==什么时候比===更有意义?
-
22-09-2019 - |
题
作为 在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.
}
不隶属于 StackOverflow