Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

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

#javascript #циклы


var x = false;
var c = false;
setTimeout(function() {x = true; alert('from timeset ' + x);}, 1000);
while(!c) { c = x; }

    


Ответы

Ответ 1



В JS нет многопоточности, и цикл не передаст управление следующему ивенту пока не выполнится. Более подробнее про eventloop можно посмотреть тут.

Ответ 2



JS работает всегда в одном потоке, если позволяет функциональность, асинхронно. Поочередно из очереди событий берутся задачи и выполняются, в данном случае произойдет так, что задача while т.е цикл, будет выполнятся бесконечно, и JS не когда не дойдет до следующего элемента в очереди, а именно нашей callback функции, где меняются значение переменных.

Комментариев нет:

Отправить комментарий