JavaScript
JavaScript онлайн-учебник: как учиться
Онлайн-учебник по JavaScript лучше проходить не как книгу для чтения, а как рабочую тетрадь: прочитали маленький блок, запустили пример, изменили данные, сделали похожую задачу и только потом перешли дальше. Иначе легко открыть десять вкладок, увидеть разные советы и не понять, с чего начать
Главный ориентир простой: после каждого занятия у вас должен оставаться маленький работающий фрагмент кода. Это может быть проверка формы, фильтр списка, обработчик кнопки или функция для расчета суммы
Как устроить обучение
Разбейте тему на несколько частей:
- синтаксис
- переменные
- условия
- циклы
- функции
- массивы
- DOM
- асинхронность
- мини-проекты
Не пытайтесь пройти все за один подход. Лучше разобрать один раздел, сделать пример, проверить ошибку и только потом идти дальше. Такой способ медленнее на старте, но быстрее приводит к настоящему пониманию
Минимальный рабочий пример
Начинайте с малого. Любая сложная тема становится понятнее, если есть короткий пример, который можно запустить или применить. В хорошем учебном примере есть входные данные, действие и результат, который легко проверить
Полезный набор для старта:
- кнопка на странице
- валидация формы
- фильтр списка
- fetch-запрос
Если пример не запускается или результат непонятен, не переходите дальше. Остановитесь и разберите, где именно возникла проблема: синтаксис, данные, версия инструмента, путь к файлу, настройка окружения или ожидание от результата
По этой теме полезно отдельно посмотреть Идеи приложений на JavaScript для портфолио, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Вопросы JavaScript на собеседовании, чтобы расширить контекст и сравнить подходы
Как читать объяснения
Новички часто читают материал как обычную статью: сверху вниз, без пауз. В программировании и технических темах это работает плохо. Нужно читать кусками. После каждого важного блока задавайте себе три вопроса:
- Что здесь было новым?
- Как это проверить на маленьком примере?
- Где я могу ошибиться?
Если не получается ответить, вернитесь на шаг назад. Нормальное обучение состоит не из быстрого чтения, а из маленьких проверок
Практический порядок
- выбрать один учебник
- пройти тему
- запустить пример
- изменить данные
- сделать мини-задачу
После каждого шага смотрите на результат. Если вы изменили данные, но не можете объяснить, почему результат изменился, значит, тема еще не закрепилась. Это нормально: просто уменьшите пример
Частые ошибки
Первая ошибка — копировать готовый ответ без запуска. Кажется, что все понятно, но при первой самостоятельной задаче появляются пробелы
Вторая ошибка — изучать слишком много тем одновременно. Если сегодня вы открыли синтаксис, библиотеку, фреймворк и архитектуру, мозг не успеет связать это в понятную систему
Третья ошибка — не проверять крайние случаи. Пустая строка, ноль, неправильный формат, отсутствующий файл, пустой список часто показывают, насколько хорошо вы поняли тему
Четвертая ошибка — не возвращаться к старым заметкам. Повторение нужно не для галочки, а чтобы увидеть связи между темами
Как понять, что вы разобрались
Есть простая проверка:
- вы можете объяснить идею без заученной фразы;
- можете привести маленький пример;
- можете изменить входные данные;
- можете предсказать результат;
- можете назвать типичную ошибку;
- можете применить тему в небольшой задаче
Если все пункты выполняются, можно двигаться дальше. Если нет, выберите самый слабый пункт и потренируйте его отдельно
Чек-лист
- Понятна цель темы
- Есть минимальный пример
- Пример запущен или применен
- Результат проверен
- Ошибка разобрана
- Сделана короткая заметка
- Есть следующий шаг
Проект недели: каталог с фильтром
После базовых тем сделайте маленький каталог товаров на моковых данных. Это лучше очередной абстрактной задачи, потому что здесь сразу соединяются массивы, объекты, условия, функции и вывод результата на страницу
const products = [
{ name: 'Клавиатура', price: 2500, category: 'tech' },
{ name: 'Книга', price: 900, category: 'books' },
{ name: 'Монитор', price: 12000, category: 'tech' }
];
const cheapProducts = products.filter((product) => product.price < 3000);
console.log(cheapProducts);
Сначала выведите результат в консоль. Потом добавьте разметку: карточка товара, цена, категория. Следующий шаг — поле поиска и фильтр по категории. Потом кнопка Сбросить. Такая последовательность учит не только синтаксису, но и нормальной разработке: маленькое изменение, запуск, проверка, следующее изменение
Что обязательно проверить:
| Ситуация | Что должно произойти |
|---|---|
| список пустой | появляется сообщение, а не сломанная страница |
| поиск ничего не нашел | пользователь видит понятный текст |
| цена равна границе фильтра | условие работает ожидаемо |
| пользователь пишет разным регистром | поиск не ломается |
| нажали сброс | возвращается полный список |
Как понять, что можно идти дальше
Не переходите к React сразу после первой главы про функции. Сначала проверьте себя на трех вещах: вы можете объяснить чужой код, изменить его под новую задачу и собрать маленький проект без подсказки в каждом действии. Если каталог, список задач и форма с валидацией собираются самостоятельно, следующий уровень будет идти намного спокойнее
Хорошая учебная сессия длится 60-90 минут. Первые 15 минут повторите старый код, следующие 40 минут делайте новую часть, последние 15 минут запишите, что получилось и где застряли. Этот журнал потом экономит часы, потому что вы видите не общее я ничего не понимаю, а конкретное путаю filter и map, не понимаю event.target, не знаю, где хранить состояние
Мини-проект после первых тем
После переменных, условий, функций и массивов сделайте маленький список задач. Он связывает темы в один сценарий: пользователь вводит текст, код проверяет пустую строку, добавляет объект в массив и выводит список
const tasks = [];
function addTask(title) {
const cleanTitle = title.trim();
if (!cleanTitle) {
return;
}
tasks.push({ title: cleanTitle, done: false });
}
addTask('Повторить функции');
addTask(' ');
addTask('Сделать задачу на массивы');
console.log(tasks);
Потом добавьте вторую функцию, которая отмечает задачу выполненной
function completeTask(index) {
if (!tasks[index]) {
return;
}
tasks[index].done = true;
}
completeTask(0);
console.log(tasks);
Такой мини-проект показывает, что учебник стал практикой, а не набором прочитанных страниц
Упражнение на DOM после консоли
Когда код в консоли стал понятен, перенесите маленькую задачу на страницу. Например, счетчик кликов
<button id="counter">Нажать</button>
<p id="result">0</p>
const button = document.querySelector('#counter');
const result = document.querySelector('#result');
let count = 0;
button.addEventListener('click', () => {
count += 1;
result.textContent = count;
});
Это упражнение показывает разницу между переменной в коде и текстом на странице. После запуска добавьте кнопку сброса и проверьте, что счет возвращается к нулю