Задать вопрос

Почему при написании цикла for of работает, а при другом цикле не работает?

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <h1>Поиск минимального и максимального числа</h1>
    <p class="all-elements">12, 5, 8, 20, 3, 16</p>
    <button class="min">Найти минимальное число</button>
    <button class="max">Найти максимальное число</button>
    <p>Минимальное число: <span class="minNumber"></span></p>
    <p>Максимальное число: <span class="maxNumber"></span></p>
    <script>
      let minNumber = document.querySelector('.minNumber');
      let maxNumber = document.querySelector('.maxNumber');

      let numbers = [12, 5, 8, 20, 3, 16];

      let min = document.querySelector('.min');
      let max = document.querySelector('.max');

      min.onclick = function min() {
          let minimum = numbers[0]; 
		for (const item of numbers) { 
		if(item < minimum) { 
			minimum = item; 
		} 
		}
 	minNumber.append(minimum);
	return minimum;
}; 

 
	 
      max.onclick = function min() {
          let maximum = numbers[0]; 
		for (const item of numbers) { 
		if(item > maximum) { 
			maximum = item; 
		} 
		}
 	maxNumber.append(maximum);
	return maximum;
};

    </script>
  </body>
</html>

Почему, если я переписываю кнопку min вот таким вот образом, то она мне выдает значение 12, а не 3?

min.onclick = function min() {
          let minimum = numbers[0]; 
		for (const i = 0; i < numbers.length;; i++) { 
		if(numbers[i] < minimum) { 
			minimum = numbers[i]; 
		} 
		}
 	minNumber.append(minimum);
	return minimum;
};


ПРОБЛЕМУ РЕШИЛ: НАДО БЫЛО let НАЗЫВАТЬ, А НЕ Const
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Для чего вообще цикл нужен чтобы определить минимальное и максимальное число?

Math.min(...[12, 5, 8, 20, 3, 16]); // 3
Math.max(...[12, 5, 8, 20, 3, 16]); // 20
Ответ написан
opium
@opium
Просто люблю качественно работать
в обычном for-е i++ — это переприсваивание, const его запрещает. Первая итерация проходит (12 < 12 = false), потом update-шаг кидает TypeError и функция падает — minimum так и остаётся 12.

for...of создаёт новый binding на каждой итерации, поэтому там const нормально работает.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы