Учебник JavaScript для начинающих
Язык веба, который оживляет страницы прямо в браузере. Разберём переменные, функции, объекты, массивы и работу с DOM.
Курс «JavaScript» состоит из 12 разделов и 65 уроков: Основы JavaScript, Условия и циклы, Функции, Объекты, Типы данных, Исключения и модули, Возможности ES6, Методы массивов, Асинхронный JavaScript, DOM и события, Асинхронность глубоко и Продвинутый JavaScript. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Основы JavaScript
- Как запустить JS-код
- Переменные и константы в JS
- Метод cosnole.log() в JS
console.log() в JavaScript: вывод строк, чисел, переменных и объектов в консоль, шаблонные строки, отладка кода — с примерами и таблицей методов console.
- Типы данных в JS
- Операторы в JS
- Комментарии в JS
- Преобразование типов в JS
2 Условия и циклы
- Операторы сравнения и логические операторы в JS
В этом разделе вы научитесь использовать логические конструкции if..else, switch, а также циклы while и for.
- Условный оператор if...else в JS
- Цикл for в JS
- Циклы while и do...while в JS
- Оператор break в JS
Оператор break в JavaScript: выход из цикла for и while, вложенные циклы, break в switch — пошаговые примеры с объяснением.
- Оператор continue в JS
- Оператор switch в JS
- Операторы сравнения и логические операторы в JS
3 Функции
4 Объекты
5 Типы данных
- Массив в JS
- Многомерные массивы в JS
- Тип данных String в JS
- Цикл for...in в JS
Цикл for...in в JavaScript: перебор ключей объекта, работа со строками и массивами, сравнение с for...of — с примерами и таблицей.
- Тип данных Number в JS
- Тип данных Symbol в JS
6 Исключения и модули
7 Возможности ES6
- Возможности JS ES6
- Стрелочные функции в JS
- Необязательные параметры в JS
Параметры по умолчанию в JavaScript (ES6): синтаксис, выражения и функции как дефолт, поведение undefined vs null — с примерами.
- Шаблонные строки в JS
- Оператор spread в JS
- Объект Map в JS
- Объект Set в JS
- Деструктурирующее присваивание в JS
- Классы в JS
- Наследование классов в JS
- Цикл for...of в JS
- Прокси в JS
8 Методы массивов
- map, filter, reduce в JavaScript
Методы map, filter и reduce в JavaScript: трансформация, фильтрация и свёртка массивов с примерами и цепочками методов.
- Поиск в массиве: find, findIndex, includes, indexOf
Поиск в массиве JavaScript: find, findIndex, includes, indexOf — как найти элемент по значению или условию, сравнение методов с примерами.
- Сортировка и изменение массивов: sort, push/pop, slice/splice
Изменение и сортировка массивов JavaScript: sort, push, pop, shift, unshift, slice, splice — мутирующие и чистые методы с примерами.
- map, filter, reduce в JavaScript
9 Асинхронный JavaScript
- setTimeout, setInterval и колбэки
setTimeout и setInterval в JavaScript: отложенный и периодический вызов функций, колбэки и callback hell — основы асинхронности с примерами.
- Промисы: Promise, then, catch
Promise в JavaScript: создание промиса, цепочки then/catch/finally, Promise.all — работа с асинхронным кодом без колбэков с примерами.
- async/await в JavaScript
async/await в JavaScript: синхронный стиль для асинхронного кода, обработка ошибок через try/catch, параллельное выполнение с Promise.all.
- fetch и работа с JSON
fetch API в JavaScript: GET и POST запросы, разбор JSON-ответа, проверка response.ok, JSON.parse и JSON.stringify с примерами.
- setTimeout, setInterval и колбэки
10 DOM и события
- Что такое DOM и выбор элементов
DOM в JavaScript: Document Object Model, выбор элементов через querySelector, querySelectorAll, getElementById — базовая работа с деревом страницы.
- Изменение содержимого и стилей элементов
Изменение DOM в JavaScript: textContent, innerHTML, classList, style, setAttribute — как менять содержимое, классы и стили элементов.
- Обработчики событий: addEventListener
addEventListener в JavaScript: клики, ввод, отправка формы, объект Event, preventDefault, делегирование событий с примерами.
- Что такое DOM и выбор элементов
11 Асинхронность глубоко
- Событийный цикл детально
Call stack, очереди microtask и macrotask, порядок выполнения. Запускаемые примеры «что выведет» с промисами и setTimeout.
- Promise глубоко
Создание промисов, три состояния, синхронный executor, цепочки .then и обработка ошибок через .catch. Запускаемые примеры.
- Комбинаторы промисов
Promise.all, race, allSettled и any: чем отличаются, когда завершаются и какой выбрать. Запускаемые примеры каждого.
- async/await и обработка ошибок
async/await как сахар над промисами, try/catch/finally, ошибки в цикле и параллельный запуск через Promise.all. Запускаемые примеры.
- Асинхронные итераторы и генераторы
for await...of, async function* и Symbol.asyncIterator для обработки потоков данных и постраничной загрузки. Запускаемые примеры.
- Событийный цикл детально
12 Продвинутый JavaScript
- Замыкания: паттерны на практике
Счётчики, модульный паттерн, мемоизация и приватность через замыкания и WeakMap. Запускаемые примеры и ловушка цикла с var.
- Прототипы и наследование глубоко
Цепочка прототипов, Object.create, наследование на конструкторах и классы как сахар над прототипами. Запускаемые примеры.
- Итераторы и генераторы
Протокол итерации, Symbol.iterator, function*, ленивые бесконечные последовательности, двусторонний обмен и yield*. Запускаемые примеры.
- Proxy и Reflect
Перехват операций над объектом через Proxy (get/set), методы Reflect и их совместное использование для логирования и валидации. Запускаемые примеры.
- Коллекции: Map, Set, WeakMap, WeakSet
Map и Set против объектов и массивов, слабые ссылки WeakMap/WeakSet и шпаргалка по выбору структуры данных. Запускаемые примеры.
- Функциональные приёмы
Чистые функции и иммутабельность, каррирование, композиция функций (compose/pipe) и декларативные цепочки filter/map/reduce. Запускаемые примеры.
- Замыкания: паттерны на практике