Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое setTimeout и setInterval?
setTimeout выполняет указанную функцию один раз через заданное время, а setInterval — периодически, с указанным интервалом. Оба метода работают асинхронно, что значит, что они не блокируют основной поток выполнения программы. Чтобы остановить выполнение setInterval, нужно вызвать clearInterval, а для остановки отложенного вызова setTimeout — clearTimeout.
Как реализовать "ленивые" вычисления (lazy evaluation) в JavaScript?
Ленивые вычисления в JavaScript означают, что результат вычисления будет возвращен только по мере необходимости, а не сразу. Это может улучшить производительность, особенно если результаты не всегда нужны. Ленивые вычисления можно реализовать с помощью функций, возвращающих другие функции или используя генераторы, которые позволяют приостанавливать и возобновлять выполнение.
Как написать React-компонент, чтобы при монтировании запускался setInterval, выводящий в консоль "Hello world" каждые 10 секунд? Что важно учесть при такой реализации с setInterval?
useEffect(() => {
const intervalId = setInterval(() => {
console.log('Hello world');
}, 10000);
return () => clearInterval(intervalId); // Очистка при размонтировании
}, []);Важно:
Очистка в return — иначе интервал будет работать после удаления компонента.
Пустой массив зависимостей [] — чтобы эффект выполнился только при монтировании.
Как setInterval и setTimeout влияют на this?
В обычных функциях this внутри setInterval/setTimeout теряется (становится window/undefined в strict mode). Стрелочные функции сохраняют this из внешнего контекста.
Отличие анимации при использовании requestAnimationFrame и SetInterval
setInterval выполняет функцию с фиксированной задержкой, не учитывая частоту обновления экрана, что может приводить к пропуску кадров и лишним вычислениям. requestAnimationFrame синхронизирует выполнение кода анимации с частотой обновления экрана (обычно 60 кадров/с), что делает анимацию плавной и эффективной. Он также автоматически останавливается, когда пользователь переходит на другую вкладку, экономя ресурсы. Для плавных анимаций всегда следует предпочитать requestAnimationFrame.
Почему setInterval нужно очищать при размонтировании компонента?
Как корректно очищать setInterval в useEffect?
Чем setInterval хуже setTimeout для polling?
В каком порядке вызываются valueOf и toString?
Как работают методы Object.keys и Object.values в JavaScript?
Рейтинг:
5
Сложность:
4
setInterval продолжает работать даже после того, как компонент исчез со страницы, потому что он живёт отдельно от React. Если интервал не очистить, он будет дальше выполнять код, тратить ресурсы и может пытаться обновлять state уже размонтированного компонента. Это приводит к лишним вычислениям, странным багам и предупреждениям в консоли. Поэтому таймеры нужно останавливать в cleanup-функции useEffect.
Рейтинг:
5
Сложность:
4
setInterval очищается через clearInterval, вызванный в функции, которую возвращает useEffect. Эта функция выполняется при размонтировании компонента и перед повторным запуском эффекта. Важно сохранить идентификатор интервала в переменную внутри эффекта. Такой подход гарантирует, что таймер не продолжит работать после ухода компонента со страницы.
Рейтинг:
4
Сложность:
5
setInterval запускает обработчик по расписанию, даже если предыдущий запрос ещё не закончился, из-за чего появляются параллельные запросы и лишняя нагрузка. Интервалы также “плывут” (drift): если обработчик выполняется долго, фактические моменты запуска смещаются. setTimeout удобнее для polling, потому что позволяет запускать следующий запрос после завершения предыдущего и гибко менять задержку (например, при ошибках увеличить).
Рейтинг:
5
Сложность:
7
При приведении объекта к примитиву JavaScript сначала пытается вызвать valueOf, а если он не возвращает примитив, вызывает toString. Этот порядок применяется по умолчанию для числового контекста. Если результат всё ещё не примитив, выбрасывается ошибка. Поведение строго описано в спецификации.
Рейтинг:
4
Сложность:
5
Методы Object.keys и Object.values позволяют извлекать ключи и значения объекта соответственно:
Object.keys возвращает массив всех ключей объекта.
Object.values возвращает массив всех значений объекта.
Рейтинг:
3
Сложность:
5
Рейтинг:
1
Сложность:
7
Рейтинг:
5
Сложность:
6
Рейтинг:
2
Сложность:
7
Рейтинг:
5
Сложность:
4