为什么在if条件中为常量

时间:2013-07-10 12:35:37

标签: javascript

我经常看到结构是否像这样编码:

if (true == a)
if (false == a)

为什么他们先把常数值放在而不是变量?如在这个例子中:

if (a == true)
if (b == true)

2 个答案:

答案 0 :(得分:14)

这称为yoda语法或yoda条件。

它用于帮助防止意外分配。

如果您忘记了等号,则会失败

if(false = $a)无法编译

if($a = true)true的值分配给变量$a并评估为true

Wordpress Coding Standards具体提到这一点:

if ( true == $the_force ) {
    $victorious = you_will( $be );
}
  

进行逻辑比较时,始终将变量放在右侧   左边的边,常数或文字。

     

在上面的示例中,如果省略等号(承认它,它就会发生   即使对我们经验最丰富的人来说,你也会得到一个解析错误,因为   你不能分配像真的常数。如果声明是   另一种方式($ the_force = true),任务将是   完全有效,返回1,导致if语句评估为   是的,你可能会在一段时间内追逐那个bug。

     

有点奇怪,是的,阅读。习惯了,你会的。

答案 1 :(得分:-2)

这是YODA Style编码

的示例
if (var a == true){
 }

更安全
 if (true == var a){
 }

因为当您忘记第二个=标记时,您将收到无效的分配错误,并且可以在编译时中捕获它。