JavaScript

Чему равно значение выражения - "0 || 1 && 2 || 3" ?

Проходил тест. В ответах теста написано что верный ответ "2". Но ИМХО это бред и правильный ответ "1".
Кто прав?
а javascript от рождения язык бредовый
применять булевые операции к числам, как к объектам - это просто один из маразмов,
впереди тебя ещё ждёт много удивительных открытий
МР
Мурат Раздыков
42 621
Лучший ответ
Эдуард А > javascript от рождения язык бредовый
согласен, но в данном случае это замечание не уместно: в JS это не совсем булевы операторы. Подобное поведение && и || есть и других языках, например в unix shell и Perl.
Сергей Козлов Видимо просто вы его не поняли !
Это как теория относительности не всем дано понять её!

&& || Это не булевые операторы а условные это большая разница  бурливые выглядят так  |  &
Условия исполняются с лева на право потому в этом примере всё логично до безобразия!
И ещё есть такое понятие как приоритет выполняемых операций который может влиять на последовательность действий к примеру 5+5*5 будет равно 30 а не 50 как многие отвечают :) :)

Чудик, ты сейчас использовал браузер, чтобы задать этот вопрос. Вместо этого ты мог просто открыть консоль браузера и вставить туда выражение.
F12 -> консоль
Dota Dva
Dota Dva
82 151
Конечно тест условия выполняются с лева на право
первое условие || гласит если 0 значить перейти в право там у тебя 1 с условием && которое гласит
если не ноль от перейти в право  там у тебя сново 2 с условем || если ноль то перейти в право но 2 эта не 0 потому дальнейшие прохождение условий заканчивается и выводится 2  

Сергей Козлов
Сергей Козлов
58 049
&& - оператор логического И.
Его второй операнд не вычисляется (и не возвращается) только в случае ложности первого.
А в данном случае, первый операнд && истинный: Boolean(1)===true. Поэтому, возвращается значение второго (число 2).

Число 1 было верным ответом при использовании того же логического оператора || (ИЛИ) вместо &&. То есть, при выражении 0 || 1 || 2 || 3;
При истинности первого операнда, оператор || его сразу возвращает, "не обращая внимания" на второй.

Приоритет этих логических операторов равен, то есть порядок вычисления выражения такой:
((0 || 1) && 2) || 3
, и само вычисление производится так:
0 || 1 && 2 || 3
1 && 2 || 3
2 || 3
2