'AND' vs '&&' как оператор - PullRequest
       118

'AND' vs '&&' как оператор

276 голосов
/ 10 мая 2010

У меня есть кодовая база, где разработчики решили использовать AND и OR вместо && и ||.

Я знаю, что есть различие в приоритетах операторов (&& идет перед and), но с данной структурой ( PrestaShop , если быть точным) это явно не причина.

Какую версию вы используете? and более читабельно, чем &&? Или нет разницы?

Ответы [ 11 ]

0 голосов
/ 10 мая 2010

Полагаю, это дело вкуса, хотя (ошибочно) их перепутывание может вызвать нежелательное поведение:

true && false || false; // returns false

true and false || false; // returns true

Следовательно, используя && и || безопаснее, потому что они имеют наивысший приоритет. Что касается читабельности, я бы сказал, что эти операторы достаточно универсальны.

ОБНОВЛЕНИЕ : По поводу комментариев, в которых говорится, что обе операции возвращают false ... ну, на самом деле приведенный выше код ничего не возвращает, извините за двусмысленность Для уточнения: поведение во втором случае зависит от того, как используется результат операции. Посмотрите, как приоритет операторов вступает в игру здесь:

var_dump(true and false || false); // bool(false)

$a = true and false || false; var_dump($a); // bool(true)

Причина $a === true заключается в том, что оператор присваивания имеет приоритет над любым логическим оператором, как уже очень хорошо объяснено в других ответах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...