我有一个代码库,开发人员决定使用ANDOR代替&&||

我知道运营商的优先级有差异(&&前面and),但是对于给定的框架(Prestashop确切地说)这显然不是原因。

您正在使用哪个版本?是and比可读性更可读&&?还是没有区别?

答案

如果您使用ANDOR,最终您会被这样的事情绊倒:

$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)

来自: stackoverflow.com