Я сравниваю даты в JavaScript и столкнулся с проблемой. У меня есть переменная startDate, которая пустая "" (это видно в консоли браузера). По логике моего кода первое условие не должно выполняться, потому что startDate равна пустой строке, но почему-то сообщение alert("Выполнилось первое условие"); все равно показывается. Не могу понять в чем ошибка.
Проблема в операторе ИЛИ (||). Пустая строка startDate не равна null, поэтому первая часть startDate != null возвращает true, и вся проверка проходит. Замени ИЛИ на И (&&): if(startDate != null && startDate != ""). Кстати, как эта переменная вообще заполняется?
да, ребята правы про ||, но объясню проще. В javascript логика такая: если хоть одна часть с || true, то всё условие срабатывает. У тебя “” не равна null (это правда), значит первая часть уже true и дальше не смотрит. Проще всего - поменяй на if(startDate && startDate != "") или вообще if(startDate.trim()) если пробелы тоже убрать надо. Такие баги часто бывают, не парься)
Твоя логика сломана из-за ||. Когда startDate = “”, условие startDate != null возвращает true (пустая строка не null), и код выполняется. Замени на if(startDate != null && startDate != "") или просто if(startDate) - так проверишь и null, и пустую строку разом.