Learn JavaScript

Курс по JavaScript

Оглавление курса: модули и шаги.

Старт

  1. Как запускать JavaScript в браузере
    Пошаговые способы запускать JavaScript в браузере через DevTools и Console, а также разбор типичных ошибок и чтение stack trace.
  2. Подключение script - где ставить, defer и порядок выполнения
    Разбор способов подключения script в HTML, влияние места вставки, атрибуты defer и async, а также порядок выполнения и частые ошибки.
  3. Переменные - let и const (почему так)
    Объяснение, что такое переменные в JavaScript, чем отличаются let и const, почему чаще выбирают const и как избегать типичных ошибок.
  4. Типы данных - string, number, boolean, null, undefined
    Базовые типы данных в JavaScript: строки, числа, логические значения, null и undefined. Проверка типа через typeof и типичные нюансы.
  5. Преобразование типов - Number, String, Boolean и NaN
    Явное и неявное преобразование типов в JavaScript: Number(), String(), Boolean(), разбор NaN и способы безопасной проверки данных.
  6. Строки - шаблонные строки и полезные операции
    Работа со строками в JavaScript: шаблонные строки, конкатенация, доступ к символам, поиск, замена, разбиение и полезные методы.

Логика и условия

  1. Условия if и else - базовая логика
    Условные конструкции if и else в JavaScript: как работают проверки, блоки кода, цепочки else if, сравнения и частые ошибки.
  2. Сравнения в JavaScript: === и ==, >, <, >=, <=
    Операторы сравнения: строгое и нестрогое равенство, сравнение чисел и строк, а также нюансы с NaN, null, undefined и объектами.
  3. Truthy и Falsy в JavaScript
    Как значения приводятся к true или false в условиях: список falsy, примеры с if, логическими операторами и частые нюансы.
  4. Логические операторы &&, ||, ! в JavaScript
    Как работают &&, || и !: short-circuit, порядок вычисления, возврат операндов (не только true/false) и типичные паттерны.
  5. Тернарный оператор ? : в JavaScript
    Как работает тернарный оператор: синтаксис, приоритет, вложенные тернарники, и когда лучше выбрать if/else.
  6. switch в JavaScript: когда он удобнее if
    Как работает switch: сравнение по ===, case/default, break, группировка кейсов и ситуации, где switch читается лучше if/else.

Циклы

  1. Цикл for в JavaScript: структура, шаг, границы
    Как устроен цикл for: инициализация, условие, шаг, работа с индексами и границами, а также частые ошибки в циклах.
  2. Циклы while и do...while в JavaScript
    Как работают while и do...while: проверка условия, минимум одна итерация в do...while, break/continue и типичные ошибки с бесконечными циклами.
  3. break и continue в JavaScript
    Как управлять выполнением циклов: break для остановки, continue для пропуска итерации, примеры для for/while и частые ошибки.
  4. Перебор строк и массивов в JavaScript
    Как перебирать строки и массивы: индексы, length, for/for...of, доступ к символам и элементам, и базовые приемы.
  5. Частые ошибки циклов в JavaScript
    Типичные ошибки при работе с циклами: бесконечные циклы, неверные границы, off-by-one, изменение коллекции во время перебора и ошибки с continue.

Функции

  1. Функции в JavaScript: зачем нужны и как работает return
    Базовые идеи функций: зачем они нужны, параметры и аргументы, возвращаемое значение через return, ранний выход и частые ошибки.
  2. Параметры и аргументы в JavaScript: значения по умолчанию
    Как передавать данные в функции: параметры и аргументы, missing arguments, значения по умолчанию, rest-параметры и аккуратные проверки.
  3. Function declaration vs function expression в JavaScript
    Два способа создать функцию: declaration и expression. Разница простыми словами: hoisting, где можно вызывать, и как выбирать подходящий вариант.
  4. Стрелочные функции в JavaScript: когда удобно
    Стрелочные функции: синтаксис, короткий return, удобство для колбэков и важные ограничения (this, arguments, new).
  5. Область видимости (scope) в JavaScript
    Как работает scope: глобальная, функциональная и блочная области видимости, lexical scope, shadowing и частые ошибки с var.
  6. Guard clauses: ранний выход из функции
    Как guard clauses упрощают код: ранние return, меньше вложенных if, обработка ошибок и проверка входных данных.
  7. Ошибки в функциях: undefined, NaN и неверные типы
    Частые ошибки при вызове и работе функций: undefined, NaN, неверный тип данных, и как сделать проверки, чтобы код был надежнее.
  8. Мини-правила читаемого кода: именование и маленькие функции
    Небольшие правила, которые делают код понятнее: хорошие имена, маленькие функции, ранний выход, минимум вложенности и аккуратные условия.

Массивы

  1. Массивы в JavaScript: что это, индексы, length
    База по массивам: что такое массив, как устроены индексы, свойство length, доступ к элементам и типичные ошибки с границами.
  2. Массивы: добавление и удаление через push/pop/shift/unshift
    Базовые методы изменения массива: push и pop для конца, shift и unshift для начала. Что возвращают методы и на что обратить внимание.
  3. slice и splice в JavaScript: копия vs изменение массива
    Два похожих метода массивов с разным смыслом: slice делает копию (не меняет массив), splice изменяет массив (удаляет/вставляет).
  4. Перебор массива: for, for...of, forEach
    Три способа перебора массива: классический for с индексом, for...of по значениям и forEach как метод. Отличия и когда что удобнее.
  5. Метод map в JavaScript: преобразование массива
    Как работает map: преобразование элементов в новый массив, функция-колбэк, неизменяемость исходного массива и частые ошибки.
  6. Метод filter в JavaScript: отбор элементов
    Как работает filter: отбор элементов по условию, новый массив, колбэк с boolean, примеры с числами и объектами и частые ошибки.
  7. find, some, every: поиск и проверки в массивах
    Методы для поиска и проверок: find возвращает элемент, some проверяет что есть хотя бы один, every проверяет что подходят все. Примеры и нюансы.
  8. includes и indexOf: проверка наличия в массиве
    Два способа проверить наличие элемента в массиве: includes возвращает boolean, indexOf возвращает индекс или -1. Примеры и нюансы с NaN.
  9. sort в JavaScript: как сортировать числа правильно
    Почему sort по умолчанию сортирует как строки и как правильно сортировать числа через compareFn. Примеры по возрастанию, убыванию и сортировка объектов.
  10. reduce в JavaScript: простые случаи (сумма и объект-счетчик)
    Метод reduce собирает массив в одно значение: сумма, произведение, максимум и объект-счетчик. Синтаксис, initialValue и частые ошибки.

Объекты и JSON

  1. Объекты в JavaScript: свойства, чтение и запись
    База по объектам: что такое объект, свойства и ключи, чтение и запись через точку и квадратные скобки, удаление свойств и частые ошибки.
  2. Вложенные объекты и безопасный доступ
    Как работать с вложенными объектами: чтение и запись по цепочке, типичные ошибки TypeError, проверки, optional chaining (?.) и nullish coalescing (??).
  3. Object.keys, Object.values, Object.entries
    Как получить ключи, значения и пары ключ-значение из объекта: Object.keys/values/entries, перебор через for...of и типичные нюансы.
  4. Деструктуризация в JavaScript: объект и массив
    Как удобно доставать значения из объектов и массивов: базовая деструктуризация, значения по умолчанию, переименование, вложенные структуры и частые ошибки.
  5. Spread и rest: копирование и сбор параметров
    Оператор ... в двух ролях: spread для копирования и объединения массивов/объектов и rest для сборки остатка в деструктуризации и параметрах функций.
  6. Мутации в JavaScript: почему сломалось само
    Почему изменения массива или объекта могут неожиданно влиять на другие переменные: ссылочные типы, общая ссылка, поверхностная копия и как избегать случайных мутаций.
  7. JSON.stringify и JSON.parse
    Как превращать данные в JSON-строку и обратно: JSON.stringify/parse, форматирование, ошибки парсинга, ограничения JSON и практичные примеры.
  8. Объекты в массивах: типовой формат данных
    Почему массив объектов - один из самых частых форматов данных: чтение и поиск, map/filter/reduce по полям, обновление элемента без мутации и частые ошибки.
  9. Типовые ошибки объектов и JSON
    Частые ошибки при работе с объектами и JSON: undefined и отсутствующие свойства, квадратные скобки, мутации, поверхностные копии, parse/stringify и ошибки формата.

DOM

  1. Что такое DOM и как JavaScript управляет страницей
    DOM - это объектная модель HTML-страницы. Как устроено дерево элементов, что такое document, как находить элементы и менять текст, атрибуты и классы.
  2. querySelector и querySelectorAll: поиск элементов
    Как находить элементы на странице через CSS-селекторы: querySelector/querySelectorAll, NodeList, перебор, поиск внутри контейнера и частые ошибки.
  3. textContent и innerHTML: разница и безопасность
    Как менять содержимое элементов: textContent vs innerHTML, когда нужен HTML, почему innerHTML может быть опасным и как делать безопаснее.
  4. Атрибуты, классы и dataset в DOM
    Как читать и менять атрибуты и классы элементов, что такое data-* и dataset, как правильно работать с булевыми атрибутами и типовые ошибки.
  5. Создание и вставка элементов: createElement и append
    Как создавать элементы в DOM через createElement, задавать текст и атрибуты, добавлять в документ через append/prepend, собирать фрагменты и избегать типовых ошибок.
  6. События в DOM: addEventListener и объект event
    Как работают события в браузере: addEventListener, обработчик, объект event, target/currentTarget, preventDefault, keydown и типовые ошибки.
  7. Формы в DOM: input, submit и preventDefault
    Как работать с формами в JavaScript: события input и submit, чтение значений, preventDefault, FormData, кнопки submit и типовые ошибки.
  8. Делегирование событий в DOM
    Как обрабатывать события на списках и динамических элементах через один обработчик: всплытие, event.target, closest и практичные примеры.
  9. localStorage: сохранить настройку или строку
    Как хранить простые данные в браузере через localStorage: setItem/getItem/removeItem, хранение строк, чисел и boolean, JSON для объектов и типовые ошибки.
  10. Как структурировать маленький DOM-код: функции и render
    Как держать DOM-код понятным без фреймворков: состояние, функции-обработчики, render, обновление UI и простой шаблон структуры файла.

Асинхронность и запросы

  1. Асинхронность в JavaScript: почему код выполняется не по порядку
    Простое объяснение асинхронности: что блокирует поток, зачем нужны callbacks и Promises, как работает очередь задач, setTimeout и типовые причины эффекта 'не по порядку'.
  2. Promise в JavaScript: then, catch и finally
    Как работать с Promise: цепочки then, обработка ошибок через catch, финальная логика через finally, возврат значений, проброс ошибок и типовые ловушки.
  3. async/await в JavaScript
    Как писать асинхронный код понятнее: что делает async, как работает await, обработка ошибок через try/catch, параллельные запросы и частые ошибки.
  4. try/catch в JavaScript: обработка ошибок
    Как ловить ошибки через try/catch, когда он работает и когда нет, throw, finally, собственные ошибки и обработка ошибок в async/await.
  5. fetch GET: запрос и разбор JSON
    Как делать GET-запросы через fetch, проверять статус ответа, разбирать JSON, обрабатывать ошибки и работать с query-параметрами.
  6. Ошибки fetch: статус, сеть и неправильный JSON
    Какие ошибки бывают при fetch: HTTP-статусы, сетевые сбои, aborted, CORS, ошибки парсинга JSON и как писать надежный шаблон обработки.
  7. Promise.all: параллельные запросы
    Как запускать несколько запросов параллельно через Promise.all: отличие от последовательных await, обработка ошибок, Promise.allSettled и типовые ошибки.
  8. Мини-кеширование в localStorage: идея и пример
    Как сделать простой кеш в localStorage: хранение JSON, метка времени, TTL, обновление по сети и обработка ошибок.

Структура проекта и отладка

  1. import/export: модули
    Как работает модульная система в JavaScript: export и import, default и именованные экспорты, пути и расширения, type="module", частые ошибки и полезные правила структуры.
  2. Как разложить код по файлам: data, logic, ui
    Простой подход к структуре маленького проекта: разделение на data, logic и ui, точка входа, зависимости между слоями и пример мини-проекта.
  3. Отладка: breakpoints, debugger, чтение ошибок
    Как находить ошибки в JavaScript: чтение сообщений в консоли, стек вызовов, breakpoints, оператор debugger, watch, пошаговое выполнение и типовые сценарии.
  4. Частые ошибки новичков: подборка примеров
    Подборка типовых ошибок в JavaScript: сравнения и приведение типов, ошибки условий и циклов, массивы и объекты, работа с DOM, async/await, import/export и чтение ошибок.
  5. 10 правил понятного JS-кода: чек-лист
    Короткий чек-лист из 10 правил, которые делают JavaScript-код читаемее: имена, функции, условия, структура, данные, побочные эффекты, ошибки и стиль.
  6. Что учить дальше: DOM глубже, TypeScript, фреймворк
    Куда двигаться после базы JavaScript: углубление в DOM и браузерные API, TypeScript, сборка и модули, тестирование, а затем выбор фреймворка. Понятные ориентиры и примеры.