Почему второе условие иногда не запускается
Во многих языках программирования оператор «ИЛИ» проверяет условия слева направо и останавливается, как только находит истинное. Это называют коротким замыканием: результат уже известен, ведь для «ИЛИ» достаточно хотя бы одного истинного условия. Поэтому выражение `готово() || выполнитьРаботу()` не вызовет `выполнитьРаботу()`, если `готово()` вернула истину.
Такое поведение экономит время и позволяет безопасно строить проверки. Например, сначала можно убедиться, что объект существует, и лишь затем обращаться к его свойству: если объекта нет, проверка слева остановит вычисление и до потенциально опасного обращения справа дело не дойдёт.
Когда это становится ловушкой
Вызов функции может не только вернуть значение, но и изменить программу: записать файл, обновить счётчик, отправить запрос. Если поместить такое действие во вторую часть «ИЛИ», легко решить, что оно выполнится всегда, хотя при истинном первом условии его пропустят.
Поэтому условие справа лучше использовать только тогда, когда его допустимо не проверять. Если действие обязательно, вынесите его отдельно — до или после логической проверки. Иначе программа может выглядеть так, будто команда написана, но в нужной ветке она так и не состоится.






