我有一个代码库,开发人员决定使用AND和OR而不是&&和||。
AND
OR
&&
||
我知道运算符的优先级(&&之前and)有所不同,但是使用给定的框架(准确地说是PrestaShop),这显然不是原因。
and
您正在使用哪个版本?是and不是更具有可读性&&?还是没有区别?
如果使用AND和OR,最终将被如下所示绊倒:
$this_one = true; $that = false; $truthiness = $this_one and $that;
想猜得出什么$truthiness相等吗?
$truthiness
如果您说false… bzzzt,对不起,错!
false
$truthiness以上具有价值true。为什么? =具有比更高的优先级and。添加括号以显示隐式顺序可以使这一点更加清楚:
true
=
($truthiness = $this_one) and $that
如果您使用&&而不是and第一个代码示例中的示例,它将可以按预期方式运行,并且为false。
如以下注释中所述,这也可以获取正确的值,因为括号的优先级高于=:
$truthiness = ($this_one and $that)