Путь к молоку

Я так решил эту задачу:

var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if(time <= 20 && time >= 7 ){
  
  if((time >= 8 && time < 13) || (time > 14 && time < 19)){
      goToDairy = true;
    }
    
  if(time >= 13 && time <= 14){
      goToStore = true;
    }
  
    if((time >= 7 && time < 8) || (time >= 19 && time <= 20) ){
      goToMarket = true;
    }
    
}else{
  console.log('все места закрыты и можно никуда не ходить');
}

Подскажите, почему код работает только с условиями else if, а просто с вложенными if не работает?

var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

//молокозавод работает
if((time>=8&&time<13)||(time>=14&&time<19)){
goToDairy = true;

//если молокозавод закрыт, то переходим к проверке магазина
} else if((time>=9&&time<14)||(time>=15&&time<17)){
goToStore = true;

//если и магазин закрыт, переходим к проверке рынка
} else if(time>=7&&time<20){
goToMarket = true;
}

Все, сорри, вопрос снят, сам уже нагуглил, оказывается при просто if прыдыдущие условия все равно выполнятся, т.е. даже если первое условие сработало, если через if else, то если первое условие сработает, остальные выполняться уже не будет, на всякий случай если кому нужно, вот ссылка: https://ru.stackoverflow.com/questions/588352/Как-работает-оператор-else-if-и-в-чем-отличие-от-if

Еще вариант, без elfe if
var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if ((time >= 8 && time < 13) || (time >= 14 && time <19)) {
goToDairy = true;
}
if (((time >= 9 && time < 14) || (time >= 15 && time <17)) && goToDairy == false) {
goToStore = true;
}
if ((time >= 7 && time < 20) && goToDairy == false && goToStore === false) {
goToMarket = true;

}

Если по минимуму

var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if (time >= 8 && time < 13 || time >= 14 && time < 19) {
goToDairy = true;
} else if (time >= 9 && time < 14 || time >= 15 && time < 17) {
goToStore = true;
} else if (time >= 7 && time < 20) {
goToMarket = true;
}

Спасибо за ответы, сначала думал что нужно использовать !13 && !14 , а логика оказалась другая через или, просто разделить время работы) ||

Твой код неверен, так как у тебя не учитывается, что, если время 13.15, то программа отправит его на молокозавод, который закрыт.

let time = 15;

let goToDairy = false;
let goToStore = false;
let goToMarket = false;

if ((time >= 7 && time < 8) || (time >= 19 && time <= 20)) {
  goToMarket = true;
  } else if ((time >= 8 && time < 13) || (time > 14 && time < 19)) {
    goToDairy = true;
    } else if (time >= 13 && time < 14) {
      goToStore = true;
      }

Такого варианта вроде не было

if (time > 8 & time < 19 & Math.floor(time) !== 13) {
goToDairy = true;
} else if (time > 9 & time < 17) {
goToStore = true;
} else if (time >= 7 & time < 20) {
goToMarket = true;
}

let time = 15;

let goToDairy = false;
let goToStore = false;
let goToMarket = false;

if ((time >= 8 && time < 13) || (time >= 14 && time < 19)) {
goToDairy = true;
} else if (time >= 13 && time < 14) {
goToStore = true;
} else if ((time >= 7 && time < 8) || (time >= 19 && time <= 20)) {
goToMarket = true;
}

2021-10-04_21-59-05

Мой вариант:
let goToDairy = false;
let goToStore = false;
let goToMarket = false;

if ((time >= 8 && time < 19) && !(time >= 13 && time <= 14)) {
goToDairy = true;
} else if ((time >= 9 && time < 17) && !(time >= 14 && time <= 15)) {
goToStore = true;
} else if (time >= 7 && time < 20) {
goToMarket = true;
}

let goToDairy = false;
let goToStore = false;
let goToMarket = false;

if ((time >= 8 && time < 19) && (time < 13 || time > 14))
{ goToDairy = true; }

else if ((time >= 9 && time < 17) && (time < 14 || time > 15))
{ goToStore = true; }

else if (time >= 7 && time < 20)
{ goToMarket = true; }