JavaScript для начинающих: практические задачи для тренировки

JavaScript для начинающих: практические задачи для тренировки

Многие начинают изучать JavaScript с теории: читают статьи, смотрят видео, аккуратно конспектируют. Проходит месяц — в голове каша, а написать что-то своё всё равно не получается. Причина простая: программирование не заучивают, его натренировывают, как мышцы. Ниже собраны практические задачи, которые можно решать прямо в консоли браузера или в одном HTML-файле — без сборщиков, фреймворков и сложных настроек.

Почему практика важнее перечитывания теории

Когда вы читаете чужой код, мозг соглашается: «всё логично, я понял». Но стоит сесть за пустой файл — и оказывается, что вы не помните ни как объявить функцию, ни как получить элемент со страницы. Это нормально и случается со всеми.

Навык формируется только в момент, когда вы сами формулируете задачу, пробуете решение, получаете ошибку и исправляете её. Поэтому правило простое: на каждые 20 минут теории — минимум час практики. Задачи ниже идут от простого к сложному, так что двигайтесь по порядку.

Правила тренировки, которые экономят время

  • Решайте каждый день по чуть-чуть. Тридцать минут ежедневно дают больше, чем пять часов раз в неделю.
  • Не подсматривайте решение сразу. Дайте себе 15–20 минут на попытки, даже если они неудачные.
  • Проверяйте результат в консоли. Метод console.log — ваш главный инструмент на старте.
  • Усложняйте сами. Если задача далась легко, добавьте условие: проверку на пустой ввод, обработку ошибок, вывод на страницу.
  • Сохраняйте решения. Папка с маленькими файлами через месяц превратится в личную шпаргалку.

Задачи для старта: переменные, числа, строки

Эти задания не требуют вёрстки и работы с браузером — только консоль. Их цель — привыкнуть к синтаксису и логике вычислений.

Калькулятор скидки

Задайте цену товара и размер скидки в процентах. Выведите итоговую стоимость и сумму экономии. Усложнение: если скидка больше 50%, добавьте пометку «горячее предложение», а если цена меньше 1000 — сообщение о том, что скидка не применяется.

Конвертер температуры

Напишите функцию, которая переводит градусы Цельсия в Фаренгейты и обратно. Проверьте её на нескольких значениях, включая отрицательные. Здесь вы впервые столкнётесь с тем, что функция должна возвращать значение, а не просто выводить его в консоль.

Форматирование имени

Пользователь вводит имя как попало: строчными буквами, с лишними пробелами. Сделайте так, чтобы на выходе получалось аккуратное «Иван Петров» — с заглавных букв и без двойных пробелов.

Массивы и объекты: учимся перебирать данные

Большая часть реальной работы фронтендера — это обработка списков и объектов. Освойте методы перебора заранее, и дальше будет заметно легче.

Список покупок

Создайте массив из 5–7 товаров. Выведите их нумерованным списком, посчитайте общее количество позиций и найдите самый длинный по названию товар.

Фильтр товаров по цене

Сделайте массив объектов с полями «название», «цена», «категория». Выведите только товары дешевле заданной суммы, отсортируйте их по возрастанию цены и посчитайте общую стоимость корзины. Попробуйте решить через метод filter, а потом через обычный цикл — и сравните, какой вариант читается лучше.

DOM: связываем JavaScript с вёрсткой

Вот здесь начинается настоящая веб-разработка. Создайте простую HTML-страницу и постепенно добавляйте к ней поведение.

Кнопка «Показать и скрыть»

Есть блок с текстом и кнопка. По клику блок исчезает и появляется снова, а надпись на кнопке меняется. Это задание отлично тренирует работу с классами и свойством текста элемента.

Счётчик кликов

Каждое нажатие на кнопку увеличивает число на экране. Добавьте вторую кнопку для сброса и третью для уменьшения — но не позволяйте счётчику уходить в минус.

Переключение вкладок

Сверстайте три кнопки и три блока с контентом. По клику должен показываться только один блок, а активная кнопка — визуально выделяться. Это уже полноценный UI-компонент, который часто встречается в реальных макетах.

Формы и события

Проверка формы подписки

Сделайте форму с полями «имя», «email» и чекбоксом согласия. При отправке проверяйте: поля не пустые, email содержит символ @, галочка установлена. Выводите сообщения об ошибках рядом с полями, а при успехе — очищайте форму и показывайте благодарность. Не забудьте отменить стандартную отправку формы, иначе страница перезагрузится.

Мини-проекты для портфолио

Когда отдельные задачи перестанут пугать, соберите из них что-то цельное:

  • Список дел — добавление, отметка выполнения, удаление, сохранение в localStorage.
  • Таймер «Помодоро» — запуск, пауза, сброс и звуковой сигнал.
  • Квиз с вопросами — подсчёт правильных ответов и финальный результат.
  • Погодное приложение — запрос к открытому API и вывод данных на страницу.
  • Калькулятор — обработка нажатий и вычисления без библиотек.

Как проверять свои решения

  • Разбейте задачу на шаги и проверяйте каждый через console.log, а не весь код сразу.
  • Используйте инструменты разработчика в браузере: вкладки Elements и Console показывают, что реально происходит со страницей.
  • Тестируйте крайние случаи: пустую строку, ноль, отрицательное число, очень длинный текст.
  • Через день вернитесь к решению и попробуйте переписать его короче — это лучший способ закрепить материал.

Частые ошибки новичков

  • Скрипт подключён до появления элементов на странице, поэтому поиск элемента возвращает пустоту.
  • Путаница между присваиванием и сравнением в условиях.
  • Забытая проверка на пустой ввод — код работает только на «идеальных» данных.
  • Попытка выучить всё сразу: фреймворки, сборщики и типизацию раньше обычных циклов и функций.

Начните с первой задачи прямо сегодня — не читайте дальше, а откройте редактор и напишите пару строк. Через пару недель таких коротких сессий вы заметите, что решения приходят быстрее, ошибки раздражают меньше, а вместо страха перед пустым файлом появляется азарт. JavaScript прощает новичкам почти всё — главное, не откладывать практику на «когда дочитаю теорию».

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

  1. Ольга

    Не совсем поняла пример с конвертером температуры. Если функция возвращает число через return, я могу потом использовать его в другой формуле, а console.log нужен только чтобы проверить? Я пока путаюсь, когда писать return, а когда просто выводить в консоль.

    1. Илья Казаков

      Да, всё верно: внутри функции лучше возвращать значение через return, особенно если результат нужно передать дальше или проверить на нескольких значениях. console.log оставляй для проверки. Я специально добавил в конвертер температуры отрицательные значения, чтобы было видно разницу между возвратом и простым выводом.

  2. Никита Исаев

    Решил калькулятор скидки первым. Сделал через переменные цена и скидка, потом добавил условие для «горячего предложения» при скидке больше 50%. Понял, что если просто выводить результат в консоль, то потом сложно переиспользовать код, поэтому начал возвращать значение из функции.

  3. Светлана В.

    У меня похожая путаница с return была. Я поняла так: return отдаёт результат наружу, а console.log просто показывает его в консоли. Попробовала переписать конвертер: сначала возвращаю число, а вывожу уже снаружи. Так стало понятнее, где что происходит.

  4. Егор К.

    Не согласен, что пять часов раз в неделю совсем бесполезны. Если это пятница-суббота и человек садится за задачи на массивы и объекты, он тоже продвигается. Другое дело, что без коротких ежедневных подходов забываешь синтаксис, тут автор прав. Я после недельного перерыва снова лез в шпаргалку по перебору массива.

  5. Алина

    Коротко: форматирование имени оказалось полезнее, чем казалось. Я сделала функцию, которая убирает лишние пробелы и делает первые буквы заглавными, и потом она пригодилась для формы регистрации. До этого думала, что такие задачи слишком простые.