“AND” vs “&&” 作为运算符

2022-08-30 06:01:21

我有一个开发人员决定使用的代码库,而不是和。ANDOR&&||

我知道运算符的优先级存在差异(先行),但是对于给定的框架(确切地说是PrestaShop),这显然不是一个原因。&&and

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


答案 1

如果你使用 和 ,你最终会被这样的东西绊倒:ANDOR

$this_one = true;
$that = false;

$truthiness = $this_one and $that;

想猜猜什么等于?$truthiness

如果你说...bzzzt,对不起,错了!false

$truthiness以上值为 。为什么? 具有比 更高的优先级。添加括号以显示隐式顺序可以更清楚地说明这一点:true=and

($truthiness = $this_one) and $that

如果在第一个代码示例中使用而不是使用,它将按预期工作,并且是 .&&andfalse

如下面的注释中所述,这也适用于获得正确的值,因为括号的优先级高于:=

$truthiness = ($this_one and $that)

答案 2

根据它的使用方式,它可能是必要的,甚至很方便。http://php.net/manual/en/language.operators.logical.php

// "||" has a greater precedence than "or"

// The result of the expression (false || true) is assigned to $e
// Acts like: ($e = (false || true))
$e = false || true;

// The constant false is assigned to $f and then true is ignored
// Acts like: (($f = false) or true)
$f = false or true;

但在大多数情况下,这似乎更像是一种开发人员的品味,就像我在CodeIgniter框架中看到的每一次这样的事件一样,就像@Sarfraz提到的一样。


推荐