Javascript логические операторы и результаты
Я знаю, что результатом логических операций в большинстве языков является true, false или 1,0. В Javascript я попробовал следующее:
alert(6||5) // => returns 6
alert(5||6) // => returns 5
alert(0||5) // => returns 5
alert(5||0) // => returns 5
alert(5||1) // => returns 5
alert(1||5) // => returns 1
alert(5&&6) // => returns 6
alert(6&&5) // => returns 5
alert(0&&5) // => returns 0
alert(5&&0) // => returns 0
alert(-1&&5) // => returns 5
alert(5&&-1) // => returns -1
Так каков результат логических операторов? Если один операнд равен 0 или 1, он работает как ожидалось. Если оба отличны от нуля и отличны от 1, то
In case of logicalor
, the first operand is returned
In case of logical and
, the second operand is returned
Это общее правило?
Еще одна вещь, которую я не знаю, это оператор|
.
Я пробовал оператора|
и получил разные результаты:
alert(5|8) // => returns 13
alert(8|5) // => returns 13
alert(-5|8) // => returs -5
alert(8|-5) // => returns -5
alert(0|1) // => returns 1
alert(1|0) // => returns 1
alert(1|1) // => returns 1
Что на самом деле делает этот оператор?