JavaScript

Не могу понять выражение Упростите на JS условие if(i-- && xx + yy <= 4 ), когда все переменные- числа!

если i-1 отлично от нуля и x+y<=4
СП
Серега Панин
23 541
Лучший ответ
Эльдар Мансуров > если i-1 отлично от нуля
неверно. Если i отлично от нуля
Могу сказать что это умышленно запутанное условие я понимаю как оно работает очень сложно описать на человеческом языке Тут есть вариант если i =0 то к (yy) будет прибавлен (i-1) если в другом случае идёт выбор что прибавлять к (yy) (i-1) или (xx) будет выбрано большее а потом значение сравнивается если полученное число меньше или равно то условие срабатывает! Ответ выше в корне не верен! Надеюсь ты понял моё объяснение...
Если добавить ещё одну переменную скажем ixx то условие можно упростить для понимания вот так
ixx=i&&xx;
i--;
if(ixx!=xx){ixx--;}
ixx+=yy;
if(ixx<= 4)

Юрий Шендин
Юрий Шендин
80 837
Это выражение понять очень просто, если пошагово пройти его вычисление:
1. Значение переменной i подставляется в выражение и приводится к булевому типу (false при нуле, true при любом другом числовом значении)
2. Значение переменной i уменьшается на единицу (это никак не влияет на результат выражения)
3. Если типкаст на шаге 1 вернул false, то результат всего выражения так же false (и часть выражения правее && не вычисляется); иначе - вычисление продолжается
4. Вычисляется сумма значений переменных xx и yy
5. Если сумма меньше или равна 4, то выражение возвращает true (и тело оператора if выполняется); если же сумма больше 4, то результат выражения false.