JavaScript
JavaScript онлайн-учебник: план обучения на 30 дней
План на 30 дней нужен не для красивого расписания, а для спокойного движения от первой строки JavaScript к маленькому рабочему интерфейсу. Каждый день должен заканчиваться кодом: функцией, проверкой, обработчиком события, фильтром списка или частью мини-проекта
Не пытайтесь выучить весь язык за месяц. Хороший результат для старта — понимать базовый синтаксис, уверенно читать ошибки, работать с массивами и объектами, находить элементы на странице, реагировать на действия пользователя и собрать простой todo-list или каталог
По этой теме полезно отдельно посмотреть Идеи приложений на JavaScript для портфолио, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Вопросы JavaScript на собеседовании, чтобы расширить контекст и сравнить подходы
Как заниматься каждый день
Оптимальная учебная сессия занимает 60-90 минут. Первые 10 минут повторите вчерашний код, затем 25-35 минут разберите новую тему, после этого решите задачу без подсказки и в конце запишите, что сломалось
Держите один файл index.html для DOM-задач и отдельные файлы .js для задач в консоли. Так вы быстрее увидите разницу между обычными вычислениями и кодом, который управляет страницей
Неделя 1. Синтаксис и первые функции
Цель первой недели — перестать бояться кода и научиться запускать маленькие примеры. Не трогайте React, сборщики и сложные настройки. Достаточно браузера, редактора и консоли разработчика
- День 1: переменные, строки, числа,
console.log - День 2:
if, сравнения, логические операторы - День 3: функции с параметрами и
return - День 4: массивы и обращение по индексу
- День 5: циклы
forиfor...of - День 6: методы
map,filter,find,reduce - День 7: повторение и маленький набор задач
Пример для проверки первой недели:
function getDiscountPrice(price, percent) {
if (price <= 0 || percent < 0) {
return 0;
}
return price - price * percent / 100;
}
console.log(getDiscountPrice(1000, 15));
console.log(getDiscountPrice(500, 0));
console.log(getDiscountPrice(-100, 20));
Если вы можете объяснить, почему функция возвращает разные значения, первая неделя уже дала базу
Неделя 2. Массивы, объекты и данные
На второй неделе важно перейти от отдельных строк к данным, похожим на реальные: товары, задачи, пользователи, заказы, сообщения. Большая часть JavaScript в интерфейсах работает именно с такими структурами
- День 8: объект с несколькими полями
- День 9: массив объектов
- День 10: фильтрация списка
- День 11: поиск элемента
- День 12: сортировка
- День 13: подсчет суммы через
reduce - День 14: мини-проект в консоли
Практический пример:
const products = [
{ title: 'Книга', price: 900, category: 'books' },
{ title: 'Клавиатура', price: 2500, category: 'tech' },
{ title: 'Монитор', price: 12000, category: 'tech' },
];
const cheapTech = products.filter((product) => {
return product.category === 'tech' && product.price < 5000;
});
console.log(cheapTech);
Поменяйте границу цены, добавьте товар без нужной категории и проверьте пустой массив. Так вы учитесь не только писать код, но и проверять поведение на неудобных данных
Неделя 3. DOM и события
На третьей неделе JavaScript должен выйти из консоли на страницу. DOM нужен, чтобы находить элементы, читать значения полей, менять текст, создавать новые блоки и реагировать на клики
- День 15:
querySelectorи изменение текста - День 16: обработчик
click - День 17: чтение значения из
input - День 18: создание элемента через
createElement - День 19: список задач на странице
- День 20: удаление и отметка выполненной задачи
- День 21: повторение DOM-сценариев
Минимальный DOM-пример:
<input id="taskInput" placeholder="Новая задача">
<button id="addTask">Добавить</button>
<ul id="taskList"></ul>
const input = document.querySelector('#taskInput');
const button = document.querySelector('#addTask');
const list = document.querySelector('#taskList');
button.addEventListener('click', () => {
const title = input.value.trim();
if (!title) {
return;
}
const item = document.createElement('li');
item.textContent = title;
list.append(item);
input.value = '';
});
Проверьте пустой ввод, строку из пробелов и несколько добавлений подряд. Если после этого список ведет себя понятно, можно добавлять состояние в массиве
Неделя 4. Мини-проект и закрепление
Последняя неделя нужна, чтобы собрать темы в один сценарий. Лучший учебный проект — todo-list, каталог товаров или список книг с поиском и фильтром
- День 22: хранить данные в массиве
- День 23: рендерить список из массива
- День 24: добавлять элемент через форму
- День 25: удалять элемент по
id - День 26: фильтровать список
- День 27: сохранять данные в
localStorage - День 28: обрабатывать пустое состояние
- День 29: привести код в порядок
- День 30: собрать контрольный проект заново без подсказки
Контрольная структура проекта:
const tasks = [];
function addTask(title) {
const cleanTitle = title.trim();
if (!cleanTitle) {
return;
}
tasks.push({
id: Date.now(),
title: cleanTitle,
done: false,
});
}
function getActiveTasks() {
return tasks.filter((task) => !task.done);
}
На 30-й день попробуйте восстановить проект с чистого файла. Если приходится подглядывать, это нормально: отметьте, где именно застряли, и повторите этот блок на следующий день
Что проверять после каждой темы
- пример запускается без ошибок
- вы можете объяснить входные данные
- понятно, какая строка делает главное действие
- есть проверка пустого значения
- есть проверка необычного значения
- код можно чуть изменить без полной поломки
- результат понятен не только в одном заранее выбранном примере
Типичные ошибки в 30-дневном плане
Первая ошибка — читать больше, чем писать. JavaScript начинает держаться в голове только после собственных запусков, ошибок и исправлений
Вторая ошибка — слишком рано уходить во фреймворки. Если обычный список задач на чистом JavaScript пока не собирается, React добавит еще один слой сложности
Третья ошибка — не сохранять свои решения. Через несколько недель полезно открыть старые файлы и увидеть, какие темы уже стали понятнее
Четвертая ошибка — не проверять крайние случаи. Пустая строка, ноль, отсутствующее поле и пустой массив часто учат лучше, чем идеальный пример
Как понять, что план сработал
Через месяц вы должны уметь открыть пустой файл и собрать маленький интерфейс: поле ввода, кнопку, список, обработчик клика, массив данных и простую проверку. Не обязательно писать идеально. Важно понимать, почему код работает и где искать ошибку, если он ломается
После этого можно переходить к асинхронности, fetch, модулям, сборщикам и фреймворкам. Но базу лучше не перескакивать: именно она потом экономит недели на более сложных темах