Есть задача: Напишите функцию printNumbers(from, to), которая выводит число каждую секунду, начиная от from и заканчивая to. Решить двумя способами: setInterval и рекурсивный setTimeout.
Используя setIntervalfunction printNumbers(from, to) {
let current = from;
let timerId = setInterval(function() {
alert(current);
if (current == to) { // false
clearInterval(timerId);
}
current++;
}, 1000);
}
// использование:
printNumbers(5, 10);
Используя рекурсивный setTimeoutfunction 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?