Я просматривал некоторый код Javascript, используемый для проверки ввода формы, и я заметил оператор if
, который читал if (!(x < y && y > x)) {...}
Моя первоначальная мысль заключалась в том, что такого рода тавтологическая конструкция совершенно излишня и что одно из двух сравнений следует опустить. На всякий случай, если есть шанс, что я ошибаюсь, и на самом деле это еще не все, я подумал, что спрошу.
Другая моя мысль заключалась в том, что это может быть случай какой-то идиомы, необходимой в другом языке, которую программист просто привнес с собой в Javascript по привычке (хотя я был бы удивлен, обнаружив язык, в котором что-то вроде этого требуется, который также используется в любой среде).
РЕДАКТИРОВАТЬ
Конкретный код находится в функции для проверки того, что даты начала и окончания для отправленного события возможны (т. е. дата окончания находится после даты начала). Фактический пример читается как if(!(start_time < end_time && end_time > start_time)) {...}
, где start_time
и end_time
являются значениями DateTime
.
РЕДАКТИРОВАТЬ 2
Не является дубликатом этот вопрос, так как в этом случае проблема заключается в необходимости проверить два условия, которые кажутся взаимоисключающими в операторе if
, в то время как в этом случае проблема заключается в том, как разрешить оператор if
, который, по-видимому, требует одновременного выполнения двух взаимоисключающих условий.
x
иy
? - person CertainPerformance   schedule 07.08.2018console.error
, который печатает, если(x < y) !== (x < y && y > x)
. При выполнении ваших тестовых случаев вы увидите что-то в журналах, если ваши предположения неверны. - person Nisarg   schedule 07.08.2018