Почему рекурсивная функция не останавливается?

На сайте юзаю скрипт:

if (document.body.scrollTop < document.body.scrollHeight){
            document.body.scrollTop += 50;
            setTimeout(scroll, 100);
        } else if (document.body.scrollTop >= document.body.scrollHeight) {
            return false;
        }
    };
setTimeout(scroll, 100);

Скроллит страницу до конца и даже когда значения текущей позиции скролла и максимального значения сравнялись все равно не возвращает return. Интересует именно нативный JS без фреймворков.


Ответы (1 шт):

Автор решения: DiD

.scrollTop не может быть больше .scrollHeight так как

scrollHeight = scrollTopMax + clientHeight

Правильно

    if (document.body.scrollTop == document.body.scrollHeight - 
                                   document.body.clientHeight)

Вы можете сколько угодно прибавлять 50 пикселей к scrollTop, но по достижению нижней границы страницы его значение не будет меняться, если устанавливать значение больше чем scrollHeight - clientHeight.

→ Ссылка