var number = 15;
var taskResult;
if (number){
if (number%3==0) {taskResult=(‘Fizz’)}
if (number%5==0) {taskResult=(‘Buzz’)}
if (number%5==0 && number%3==0) {taskResult=(‘FizzBuzz’)}
}
else {taskResult = number}
Почему в данном условии не срабатывает else? Первые 3 проверки проходит, на последней число 32 не выводится.
“Переменная taskResult не определена.”
if (number) {…} else {taskResult = number}
что это за проверка у вас? что она делает?
проверка на “не ноль”?
Подсказка
уберите внешнее условие, задайте дефолтное значение результату = число
if (number) {…}
Спасибо, эту ошибку тащу давно, ей как бы “группировала” условия. Не пойму как другие коды с ней работали))
А почему если taskResult = number; стоит после условий, то код не работает (проверки 30, 18, 10 не проходит, 32 верно), а если перед условиями, то все срабатывает?
ну смотрите:
если сразу сделать так:
var taskResult = number; {3 независимые проверки fizzbuzz}
то если не проходит ни одну проверку, то ответ у нас уже изначально был, еще на этапе присвоения значения taskResult
.
а если бы проверки проходили, то результат в ячейке(а мы не забываем, что переменные - это поименованные области памяти) с именем taskResult
просто бы перезаписывался в результате fizzbuzz проверок. Если уж совсем по-простецки: у нас есть коробочка, мы туда кладем число и ждем. Если проверки проходим, вытряхиваем число и кладем туда то, что от проверки будет. И так с каждой проверкой, заново вытряхиваем и кладем результат проверки. В конце коробочку показываем боссу.
реакция босса
если же вы в конце поставите, то независимо от того, какие вычисления и условия выполнялись бы, у вас ответ в ячейке будет taskResult = number;
, т.к. эта операция присвоения является последней и безусловной для переменной taskResult
. По-простецки, мы в коробочку ничего не кладем, ждем результатов проверок, кладем туда fizz/buzz. А потом вытряхиваем и кладем туда число.
В конце коробочку показываем боссу.
реакция босса