@D-6

FizzBuzz, объясните почему одно работает другое нет?

Привет всем. Объясните дураку, почему один код работает, а другой нет?

var num = 1
for (i=100; num <= i; num++){
    if(num%3===0){
        console.log('Fizz')
    }
    console.log(num)

Тут я вроде бы даже и понял, как оно работает. console.log(num) вроде как бы и выводит 3ку, но if согласно условию меняет 3ку на Fizz.

var num = 1
 for (i=100; num < i ; num++){
     if(num%3===0){
        num = 'fiz'
        console.log(num)
     }
    console.log(num)  
 }


Но вот не могу понять почему не работает этот код
Подскажите)
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
@otdameskapizm
Если речь идет о втором куске кода, то вы в условии if переопределяете переменную num, которая у Вас является счетчиком и после этого ваш цикл слетает, так как переменная num больше не является числовым типом данных.
var num = 1 // Здесь вы задаете переменную num
 for (i=100; num < i ; num++){
     if(num%3===0){
        num = 'fiz' // Здесь вы ее переопределяете 
        console.log(num)
     }
  console.log(num)  
};


У вас выводится
1
2
fiz
fiz

и дальше цикл слетает
Будьте осторожными при работе с переменными в глобальной области видимости. Если уж хотите переопределять переменные, то воспользуйтесь лучше их разделить хотя бы так. Хотя это уж прям совсем искусственный пример
let outerNum = 1;
for(let i = 100; outerNum < i; outerNum++) {
  let innerNum;
  if (outerNum % 3 === 0) {
    innerNum = 'fizz';
    console.log(innerNum);
  }
  console.log(outerNum);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы