Что за false?
Почему в JavaScript выражение 3 > 2 > 1 возвращает ложь
Уже давно не секрет, что в результате слабой типизации и достаточно вольного приведения данных различных типов JavaScript иногда странно интерпретирует некоторые выражения.
Сегодня мы разберем, почему 1 < 2 < 3 возвращает true, а 3 > 2 > 1 возвращает false.
Согласно существующим приоритетам и ассоциативности операторов, операторы с одинаковым приоритетом будут выполняться слева направо.
А значит…
1 < 2 < 3эквивалентен(1 < 2) < 3,1 < 2вернетtrueи получится выражениеtrue < 3,- возникает вопрос - какому числу соответствует
true. Вспомним, как происходит приведение логических значений: согласно спецификации ECMAScript 7.1.14trueпреобразуется в1,falseпреобразуется в0, - таким образом, выражение
1 < 2 < 3превратилось в1 < 3, а это соответствует логическому значениюtrue.
Перейдем к выражению 3 > 2 >1:
3 > 2возвращаетtrue,- получается выражение
true > 1, - после приведения логической истины к
1получим выражение1 > 1, 1 > 1соответствует логическомуfalse.
Теперь мы поняли, почему в JavaScript выражение 3 > 2 > 1 возвращает false.
Спасибо за внимание.
