为什么在if条件下常数第一
Why Constant first in an if condition
我经常看到结构是否像这样编码:
if (true == a)
if (false == a)
为什么他们把常数值放在第一位,而不是变量?如本例所示:
if (a == true)
if (b == true)
这被称为yoda语法或yoda条件。
它用于帮助防止意外分配。
如果你忘记了等号,就会失败
if(false = $a)
编译失败
if($a = true)
将true
的值分配给变量$a
并计算为true
Wordpress编码标准特别提到了这一点:
if ( true == $the_force ) {
$victorious = you_will( $be );
}
进行逻辑比较时,始终将变量放在右边左边是常量或文字。
在上面的例子中,如果你省略了一个等号(承认它,它就会发生即使对我们中经验最丰富的人来说),你也会得到一个解析错误,因为你不能给true这样的常数赋值。如果声明是反之($the_force=true),则赋值为完全有效,返回1,导致if语句的求值为是的,你可能会追逐那个bug一段时间。
读起来有点奇怪。习惯它,你会的。
这是编码的YODA Style
的一个例子
if (var a == true){
}
不如安全
if (true == var a){
}
因为当您忘记第二个=
标记时,您将得到一个无效的赋值错误,并且可以在编译时捕获它。
相关文章:
- html+javascript:如何在某些条件下禁用dropdownlist中的null选项
- 在特定条件下从存储在localStorage中的阵列中删除对象
- 如何在一定条件下使必填字段为真
- 如何在特定条件下完全禁用FullPage.js
- 在条件下使用 slideUp() 和 slideDown()
- 停止计算以在特定条件下更新
- 如何加载特定天气条件下的图标?(AngularJS)
- 比较IF条件下的两个javascript数值
- ComboBox typeAhead有效,但在某些行为条件下valueField为空
- 返回三元条件下的新promise Q
- jqgrid在条件下动态设置单元格可编辑false
- innerHTML在else条件下未更改
- 如何在两种条件下显示相同的上下文菜单项
- Regex用于在特定条件下为新句子添加空格或句号
- HTML页面在使用JavaScript的条件下重新加载
- 保持函数在一定条件下执行
- 在不同条件下显示变量的不同值
- 我如何才能在某些条件下更改c#中谷歌地图标记的图标
- 在angularjs条件下动态添加colspan值
- 为什么在if条件下常数第一