“$ var === true”和“true === $ var”之间有区别吗?

时间:2013-12-12 12:01:43

标签: javascript

前几天,我在JavaScript应用程序中看到(我不记得哪一个)使用true === $var代替$var === true。例如:

if (true === $var) {
    // do something
}

我认为这些比较是不同的,但我明白为什么 - 有人能为我解释一下吗?而且:当我应该使用时,我不应该使用。

重复的?

我在网上搜索但没有结果。

3 个答案:

答案 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