我有一个代码库,开发人员决定使用AND
和OR
代替&&
和||
。
我知道运营商的优先级有差异(&&
前面and
),但是对于给定的框架(Prestashop确切地说)这显然不是原因。
您正在使用哪个版本?是and
比可读性更可读&&
?还是没有区别?
答案
如果您使用AND
和OR
,最终您会被这样的事情绊倒:
$this_one = true;
$that = false;
$truthiness = $this_one and $that;
想猜猜什么$truthiness
等于?
如果你说false
… bzzzt,对不起,错了!
$truthiness
以上具有价值true
。为什么?=
有一个更高的优先级比and
。添加括号以显示隐性顺序更清楚:
($truthiness = $this_one) and $that
如果您使用过&&
代替and
在第一个代码示例中,它将按预期工作,并且false
。
如下注释中所述,这也有助于获得正确的价值,因为括号的优先级高于=
:
$truthiness = ($this_one and $that)