什么时候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