Есть ли разница между этими проверками ? Ибо вторая работает как следует, а первая просто игнорируется

  1. a <= item <= b
  2. a <= item && item <= b

Ответы (2 шт):

Автор решения: vsemozhebuty

Первое выражение синтаксически правильно, но делает не то, что кажется на первый взгляд. Могут быть случаи, когда оно покажется рабочим, но в большинстве случаев это будет иллюзией.

Операторы сравнения имеют одинаковый приоритет, но вычисляются слева направо. Поэтому, например, в таком выражении:

1 <= 2 <= 1 // как ни странно, true

порядок действий под капотом такой:

  1. 1 <= 2 — даёт true.
  2. true <= 1 — true приводится к числу 1 и 1 <= 1 тоже даёт true.

Поэтому нужно пользоваться вторым выражением.

→ Ссылка
Автор решения: Sergei Kirjanov

Она не игнорируется.

let a = -6
-8 <= a <= -4

дает false, т. к.:

  • -8 <= a -- true,
  • a true <= -4 -- false
→ Ссылка