Garfields
@Garfields

Как понять логику if в этих примерах?

Есть задача: Напишите функцию printNumbers(from, to), которая выводит число каждую секунду, начиная от from и заканчивая to. Решить двумя способами: setInterval и рекурсивный setTimeout.

Используя setInterval
function printNumbers(from, to) {
  let current = from;

  let timerId = setInterval(function() {
    alert(current);
    if (current == to) {  // false
      clearInterval(timerId);
    }
    current++;
  }, 1000);
}

// использование:
printNumbers(5, 10);

Используя рекурсивный setTimeout
function printNumbers(from, to) {
  let current = from;

  setTimeout(function go() {
    alert(current);
    if (current < to) {    // true
      setTimeout(go, 1000);
    }
    current++;
  }, 1000);
}

// использование:
printNumbers(5, 10);




Почему во втором примере, когда if в логическом контексте является true срабатывает еще и следующая строчка кода увеличивая current на 1, в то время как в первом примере эта же строка не сработает пока if не вернет false?
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 2
@vladdimir
Верстальщик
Алерт вызывается до проверки условия if (curr < to), а current увеличивает после проверки условия.
Алерт 9
Проверили current === 9, а значит меньше < 10
Увеличили
Алерт 10
Проверили условие
Ответ написан
Комментировать
@fourthMAN
если ( условие верно ) {
выполнить действие
}
Что понимается под условием. Если 10 больше 1 то или
(длинна строки больше чем "эта строка")
тело условия выполняется то бишь что в { квадратных скобках }
Если условие не верно код парсится дальше до блока
else if ( условие ) или
esle (Если он есть)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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