I Shar

I Shar

мир глазами веб-разработчика

Что за false?

Почему в JavaScript выражение 3 > 2 > 1 возвращает ложь

I Shar

время чтения 1 мин.

Photo by Robert Vergeson on Unsplash

Уже давно не секрет, что в результате слабой типизации и достаточно вольного приведения данных различных типов JavaScript иногда странно интерпретирует некоторые выражения.

Сегодня мы разберем, почему 1 < 2 < 3 возвращает true, а 3 > 2 > 1 возвращает false.

Согласно существующим приоритетам и ассоциативности операторов, операторы с одинаковым приоритетом будут выполняться слева направо.

А значит…

  1. 1 < 2 < 3 эквивалентен (1 < 2) < 3,
  2. 1 < 2 вернет true и получится выражение true < 3,
  3. возникает вопрос - какому числу соответствует true. Вспомним, как происходит приведение логических значений: согласно спецификации ECMAScript 7.1.14 true преобразуется в 1, false преобразуется в 0,
  4. таким образом, выражение 1 < 2 < 3 превратилось в 1 < 3, а это соответствует логическому значению true.

Перейдем к выражению 3 > 2 >1:

  1. 3 > 2 возвращает true,
  2. получается выражение true > 1,
  3. после приведения логической истины к 1 получим выражение 1 > 1,
  4. 1 > 1 соответствует логическому false.

Теперь мы поняли, почему в JavaScript выражение 3 > 2 > 1 возвращает false.


Спасибо за внимание.

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.