Логический оператор (или обычно ||
) во многих языках кардинально отличается.
В некоторых (например, C, C ++ ) это работает следующим образом: "Оценить левую часть; если это правда, вернуть true, иначе вычислить правую сторону и вернуть true, если в противном случае это правда или ложь. " Результат всегда логический.
В других (например, Javascript, Python , я полагаю, что PHP также) это больше похоже на: "Оцените левую часть; если это правда, верните ее, иначе оцените правую - стороны и вернуть результат. " Тогда результат может быть любого типа, и вы можете сделать такие конструкции, как:
a = (b || c); // equivalent to a = b ? b : c;
или довольно необычно:
function compare(A, B) { // -1 if A<B, 0 if A==B, 1 if A>B
return B.x - A.x || B.y - A.y;
}