Заметки WEB-разработчика

Полезные материалы для web-разработки

Несколько слов о приоритетах логических операторов в PHP и javascript

В этой статье я приведу несколько интересных примеров, показывающих важность понимания работы логических опреторов в js и php

PHP

Пример 1

/*
 = приоритетнее чем or. $x1 сразу присвоится 2. Т.к. первый операнд истинен, нет смысла проверять дальше.
 Итого выведет 2
 */
$x1 = 2 or true;
var_dump($x1);

Пример 2

/*
 = НЕ приоритетнее чем ||. Данное выражение будет равносильно $x2 = (2 || true), которое дает true по правилам булевой алгебры
 Итого выведет true
 */
$x2 = 2 || true;
var_dump($x2);

Пример 3

/*
= НЕ приоритетнее чем ||. Данное выражение будет равносильно $x3 = (0 || 1), которое дает true по правилам булевой алгебры
 Итого выведет true
*/
$x3 = 0 || 1;
var_dump($x3);

Пример 4

/*
=  приоритетнее чем or. Данное выражение будет равносильно ($x4 = 0) || 1,
 Итого выведет 0
*/
$x4 = 0 or 1;
var_dump($x4);

Пример 5

/*
Стоит обратить внимание на отличие от javascript
 Итого выведет true НО в js это бы дало var x5 = 0 || false || 2; даст 2
*/
$x5 = 0 || false || 2;
var_dump($x5);

javascript

// присваивается первое истинное значение, БЕЗ перевода в булиев тип
var x1 = 0 || false || 2;
console.log(x1);

// присваивается первое ложное значение, БЕЗ перевода в булиев тип
var x2 = 0 && false && 2;
//console.log(x2);

Комментарии

Комментарии через Вконтакте