Member 13899723 Ответов: 1

Почему переменная "output" в этом коде сбрасывается на каждой итерации?


Привет, ребята, сейчас я читаю книгу JS, и одна из задач состояла в том, чтобы мы перебирали все целые числа от 1 до 100 и писали "Fizz", если оно делится на 3, "Buzz", если оно делится на 5, и "FizzBuzz", если оно делится на оба, в противном случае просто записывайте число. Мне удалось разработать код для этой проблемы, но я не уверен, почему объявление "output" сбрасывается каждую итерацию, а не сохраняет длинную строку шипений и жужжаний. Вот этот код:

for (let num = 1; num <= 100; num++){
	let output = "";
	if(num % 3 == 0) output += "Fizz";
	if(num % 5 == 0) output += "Buzz";
	console.log(output || num);
    }


Что я уже пробовал:

Я пробовал гуглить этот вопрос, но не могу найти ничего конкретного относительно того, почему переменная иногда сбрасывает каждую итерацию, тогда как иногда она сохраняется снова и снова, чтобы объединить все.

1 Ответов

Рейтинг:
5

User 7429338

Это потому, что вы заявляете об этом внутри петля. Объявите его вне цикла для объединения каждой итерации:

let output = "";
for (let num = 1; num <= 100; num++){
	if(num % 3 == 0) output += "Fizz";
	if(num % 5 == 0) output += "Buzz";
	console.log(output || num);
}


Member 13899723

@Thaddeus Jones Ahhh это имеет смысл, каждый раз, когда он зацикливается, он снова устанавливает значение"", тогда как если бы он был вне цикла, он не был бы сброшен, так как он не переоценивается... Спасибо за ясность :)

CPallini

5.