JAVASCRIPT - Не могу вывести условие с временем. В консоль выводит Доброй ночи Роман, даже если верно другое условие
1.В консоль выводит Доброй ночи Роман, даже если верно другое условие
2.Написать функцию, которой передаем имя, и она возвращает приветствие в зависимости от времени суток (Доброе утро\день\вечер\ночи Иван) - само задание, которое я пытаюсь выполнить
let time1 = new Date('September 21, 2021 20:46:00 +0700');
function setTime(name, time) {
if (12 > time >= 4) {
console.log(`Доброе утро ${name}`);
} else if (20 > time >= 12){
console.log(`Добрый день ${name}`);
} else if (23 > time >= 20){
console.log(`Добрый вечер ${name}`);
} else {
console.log(`Доброй ночи ${name}`);
}
}
setTime("Роман", time1.getHours())
Ответы (1 шт):
Всё верно. Потому что двойных условных выражений в языке нет.
Вот например 12 > time >= 4. Да, возможно, в математике можно сказать, что time меньше 12 и больше или равно 4. Но в языке таких конструкций нет. Замена такому будет
time < 12 && time >=4
Небольшое дополнение:
Окей. Язык позволяет писать такие условия, но результат выполнения будет не тот, что ожидается. И он немного отличен от тех, что есть в математике.
Если конкретно на одном примере:
if (12 > time >= 4) {
В условии 12 > time результатом будет true или false. Потому что фактически мы как бы виртуально спрашиваем "time меньше 12?". Ответом может быть да или нет. Дальше этот самый true/false идёт в сопоставление с 4. При сравнении булевого типа и числового, первый приводится к числу и потом только производится вычисление. true приводится к числу 1, false к 0.
В итоге будет либо 1 >= 4 либо 0 >= 4. Результатом этого выражения опять будет булево. И оно будет всегда false. Итог if (12 > time >= 4) будет false всегда.
Аналогично можно посмотреть другие условия.