JS_условия

Добрый вечер.

Почему выполняется лишь третье условие?

Код:
if (!isRaining && temperature >= 10 && temperature < 15) {
minutes=30;
}else {
minutes = 0;
}
if (!isRaining && temperature >= 15 && temperature < 25) {
minutes=40;
} else {
minutes = 0;
}

if (!isRaining && temperature >= 25 && temperature <= 35) {
minutes=20;
}else {
minutes = 0;
}

потому что условия независимые друг от друга. как вариант - уберите else везде

Убрала, и все прошло.

Но почему else не нужен?

И зачем определять первые две переменные?

else не нужен, потому что это работает так:
допустим температура 15, дождя нет.
первое условие возвращает в предикате ложь, значит else первого условия отдает minutes = 0 (первая перезапись переменной)
второе условие возвращает в предикате истину, значит minutes = 40 (вторая перезапись переменной)
третье условие возвращает в предикате ложь, значит else третьего условия отдает minutes = 0
(третья перезапись переменной)
проверки независимы, а значит которая последняя перезаписывает, та и идет в итог.

а должно работать так, чтобы после получения первой истины в итог шло значение сработавшего условия.
по факту хорошая программа это та, которая использует минимум перезаписей значения (тут вообще должна быть 1 или 0 перезаписей, вместо 3 как у вас).

про определение переменных не понял о чем вы, уточните вопрос.

1 лайк

“по факту хорошая программа это та, которая использует минимум перезаписей значения (тут вообще должна быть 1 или 0 перезаписей, вместо 3 как у вас).”

В материалах к этому тренажеру указан такой код:

if (условие1) {
if (условие2) {
действия;
}
}

с помощью этой команды мы используем несколько условий и какое-то действие. А как в одной команде показать несколько условий с вытекающими несколькими действиями?

Можете объяснить/показать на примере этого кода как сделать 0 перезаписей?

Код:
if (!isRaining && temperature >= 10 && temperature < 15) {
minutes=30;
}
if (!isRaining && temperature >= 15 && temperature < 25) {
minutes=40;
}

if (!isRaining && temperature >= 25 && temperature <= 35) {
minutes=20;
}

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