salo_v_bokah
@salo_v_bokah
ломаю main-ветки, не дорого

Почему код улетает в бесконечный цикл?

Из задания есть код на проверку простого числа:
const isPrime = (num) => {
  if (num <= 1) return false;

  for (let i = 2; i < num; i++) {
    if (num % i === 0) return false;
  }

  return true;
};

const checkPrime = (num) => (isPrime(num) ? console.log('yes') : console.log('no'));
console.log(checkPrime(49));

Все прекрасно работает, но если инкремент в цикле заменить на i + 1, то цикл улетает в космос. Собственно, почему так происходит, объясните новичку
  • Вопрос задан
  • 96 просмотров
Решения вопроса 3
Это происходит потому, что не происходит увелечение инкремента, условно когда итерация заканчивается код делает в вашем случае следующее i + 1, но т.к нету оператора присваивания (=), то i и не увеличивается. Обычно пишут i++, что равносильно i += 1.
Ответ написан
Комментировать
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
i++ // увеличивает i на 1 при каждом вызове
i + 1 // ничего не делает
i += 1 // то же самое что и i++
Ответ написан
Комментировать
imko
@imko
Senior Scratch Developer
Потому что i тогда не изменяется
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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