前几天,我在JavaScript应用程序中看到(我不记得哪一个)使用true === $var
代替$var === true
。例如:
if (true === $var) {
// do something
}
我认为这些比较是不同的,但我明白为什么 - 有人能为我解释一下吗?而且:当我应该使用时,我不应该使用。
我在网上搜索但没有结果。
答案 0 :(得分:7)
它们之间没有区别。
Yoda比较是由一些人完成的,以防止输入错误(缺少=
)创建作业而不是比较(因为true = $var
会抛出错误而$var = true
不会)
答案 1 :(得分:1)
我认为这只是一种最佳实践,至少我习惯于在使用C#这样的语言进行编码时看到这个建议,这很容易意外地做
if(someVar = 1)
而不是:
if(someVar == 1)
反向执行可以防止这种可能性,因为编译器会发现无法将变量的值赋给文字(或者如果使用常量则为常量)。
答案 2 :(得分:0)
否两者都没有任何区别
但$ var == false和$ var === false
存在差异$var = 0;
$var == false // TRUE
$var === false // FALSE
===也将比较变量类型。例如,它会检查它是bool,字符串还是整数。
$var = "1";
$var == 1 // TRUE
$var === 1 // FALSE