Есть ли разница между этими проверками ? Ибо вторая работает как следует, а первая просто игнорируется
- a <= item <= b
- a <= item && item <= b
Ответы (2 шт):
Автор решения: vsemozhebuty
→ Ссылка
Первое выражение синтаксически правильно, но делает не то, что кажется на первый взгляд. Могут быть случаи, когда оно покажется рабочим, но в большинстве случаев это будет иллюзией.
Операторы сравнения имеют одинаковый приоритет, но вычисляются слева направо. Поэтому, например, в таком выражении:
1 <= 2 <= 1 // как ни странно, true
порядок действий под капотом такой:
- 1 <= 2 — даёт true.
- true <= 1 — true приводится к числу 1 и 1 <= 1 тоже даёт true.
Поэтому нужно пользоваться вторым выражением.
Автор решения: Sergei Kirjanov
→ Ссылка
Она не игнорируется.
let a = -6
-8 <= a <= -4
дает false, т. к.:
-8 <= a--true,- a
true <= -4-- false