Что я чаще всего видел в JavaScript: двойное отрицание
return !!$var;
Объяснение:
!$var
оценивает $var
с напротивлогическое значение (если $var
не является логическим значением, оно преобразуется в логическое первое (преобразование типа) ), а второе !
снова инвертирует это значение, что приводит к логическому значению,$var
тоже оценил бы.
Это лучшее?Это зависит от ваших критериев.Как уже упоминалось, это может быть сложнее понять (хотя в этом нет ничего особенного), но это определенно самая короткая версия;)
Может также зависеть, какие значения вы считаете true
и false
.Эти значения оцениваются как false
по умолчанию:
- само логическое значение FALSE
- целое число 0 (ноль)
- число с плавающей запятой 0.0 (ноль)
- пустая строка и строка "0"
- массив с нулевыми элементами
- объект с нулевыми переменными-членами (только PHP 4)
- специальный тип NULL (включая неустановленные переменные)
- объекты SimpleXML, созданные из пустых тегов
Обновление:
Я думаю, что вВ общем, можно сказать, что каждый код, который избегает явного возврата true
или false
, лучше.Будь то через явное приведение или неявное преобразование типов.Конечно, явное (по определению) должно быть проще для понимания.
Наличие такого кода, как return $a ? true : false
, является избыточным.Особенно
if ($a == $b) { return true } else { return false }
, который можно было бы просто записать как return ($a == $b)
.
Должна быть причина, по которой это не одобрялось в моих старшекурсниках;).
Update2:
Я бы избегал таких выражений, как return $var && true
.В PHP он будет возвращать логическое значение, но, например, в JavaScript или Python, он будет возвращать значение $var
, если его значение равно true.И в этих языках этот «трюк» используется специально для достижения определенных эффектов.Поэтому для людей (более) знакомых с этими языками, может быть не очевидно (без документации или контекста), что должен быть возвращен только логический тип.