var time = 15;
var goToDairy = false;
var goToStore = false;
var goToMarket = false;
if (time >= 8 && time < 19 && time != 13) {
goToDairy = true;
} else if (time >=9 && time < 17 && time != 14) {
goToStore = true;
} else if (time >= 7 && time < 20) {
goToMarket = true;
}
console.log('Программа для расчета идеального места для похода за молоком в заданное время');
var time = 15;
var goToDairy = false;
var goToStore = false;
var goToMarket = false;
console.log('Время сейчас : ' + time);
switch (true) {
case time >=8 && time < 13 || time > 14 && time < 19 : goToDairy = true;
console.log('Идеально место для похода за молоком - Молокозавод'); break;
case time >=9 && time < 14 || time > 15 && time < 17 : goToStore = true;
console.log('Идеально место для похода за молоком - Магазин'); break;
case time >=7 && time < 20 : goToMarket = true;
console.log('Идеально место для похода за молоком - Рынок'); break;
default: console.log('Всё закрыто, сейчас нигде не купить молока :(');
}
Интересно, почему у тебя работает даже без объединение условий с скобки?
Как программа понимает где применять && а где ||.
То есть если бы было вот так ((time > 8 && time < 13 )|| (time > 14 && time < 19))
еще понятно.
Но в твоем случае там же можно интерпретировать по разному, или у программы как и с математическим операциями есть приоритетные. Получается && - приоритетнее чем ИЛИ и выполняется первым, а затем ИЛИ.
Почему тогда авторы замечательного курса про это не говорили?
Да и даже про то что можно условия группировать скобками и тд.
var goToDairy = false; var goToStore = false; var goToMarket = false;
console.log(‘Местное время:’ + time);
if((time >= 8 && time < 13) || (time > 14 && time < 19)) {
goToDairy=true; console.log(‘Ближайшее место для похода за молоком - Молокозавод’);
} else if((time >= 9 && time < 14) || (time > 15 && time <= 17)) {
goToStore=true; console.log(‘Ближайшее место для похода за молоком - Магазин’);
} else if (time >= 7 && time <= 20) {
goToMarket=true console.log(‘Ближайшее место для похода за молоком - Рынок’);
} else { console.log(‘Все закрыто и можно никуда не ходить’);
}
у вас первое условие срабатывает, поэтому на третье не выходит с помощью else.
как вариант - объединить логику:
if(time >= 8 && time < 13 || time >= 14 && time < 19) и т.д.
Сводка
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; }
По решению задания вопросов не возникло. Однако для реалистичности условия можно было прописать время перехода до магазина рынка и мол.завода. На сегодня в 20.00 можно отправить Кекса на рынок и он явно будет разочарован.
Кекс со времен Шредингера находится в состоянии квантовой суперпозиции, что говорит о том, что он может перемещаться на субсветовых скоростях. а поскольку погрешности в таком случае ниже математического предела вычислений жабаскрипта, поэтому пренебрегаем
var goToDairy = false;
var goToStore = false;
var goToMarket = false;
if ((8 <= time && time < 13) || (14 < time && time < 19)) {
goToDairy = true;
}
else if ((9 <= time && time < 14) || (15 < time && time < 17)) {
goToStore = true;
}
else if (7 <= time && time < 20) {
goToMarket = true;
}
if (20 < time && time < 7) {
goToDairy = false;
goToStore = false;
goToMarket = false;
}