Мы используем cookie для стабильной работы сервиса. Подробнее

Программа: Твой JavaScript

ФорматОнлайн
Объём21 занятий
О курсе

Подробнее

Цель курса - дать вам исчерпывающее понимание JavaScript. Мы не обещаем сделать из вас сеньора за две недели, это сказки. Наша задача - предоставить самую подробную и глубокую базу, которую только можно найти в рунете. Почему именно этот курс? Большинство курсов скользят по верхам: показали синтаксис, написали ToDo-лист, забыли. Здесь же мы разбираем язык на атомы. Вы узнаете многие важные детали языка, мы детально разбираем сложные темы, вроде контекста вызова, каррирования, дескрипторов свойств, Symbol и Event Loop. Это энциклопедия JS с практикой, а не очередной "быстрый старт". Что приобретут учащиеся? Фундамент, который не обесценится через год. Фреймворки приходят и уходят, а ядро JavaScript остается. Вы обретете уверенность в коде, перестанете бояться сложных багов и сможете претендовать на позиции с высокими требованиями к знанию базы. Особенности курса: Первый модуль в курсе полностью бесплатный - просто попробуйте. Это честный способ оценить глубину подачи и решить, готовы ли вы инвестировать время и деньги в свое обучение. Курс достаточно сложный, здесь не будет "магии", но будет много кода, чтения документации и решений задач, которые заставят мозг кипеть. Что нужно будет делать: Смотреть подробные видео-разборы, проходить тесты на знание нюансов и, самое главное, решать задачи с автоматической проверкой. Система будет гонять ваш код по тестам, заставляя писать по-настоящему надежные решения. Какие разделы и задания входят в курс: Программа глобально разбита на три курса: База (бесплатно): синтаксис, типы данных, циклы, функции, базовые объекты. Продвинутый JS (платный): глубокий разбор массивов и объектов, ООП (от конструкторов до классов), асинхронность, модули, NPM и работа с API. DOM, браузерное API и практика (в разработке): этот модуль станет финальным аккордом, где мы соберем все воедино на реальных проектах ванильного JS.
Требования

Что нужно для старта

  • Для прохождения программы не требуется опыт программирования.
  • Достаточно:
  • уметь открыть браузер в компьютере
  • уметь устанавливать программы по инструкции
  • иметь желание регулярно заниматься и выполнять практические задания
  • Все необходимые знания по JavaScript рассматриваются с самых основ.
Результат

Что вы получите

  • Научитесь думать как инженер, сформируете мышление, с которым любой фреймворк (React, Vue, Angular) в будущем дастся вам в разы легче.
  • Проходить технические собеседования на позиции Junior/Middle, уверенно отвечая на каверзные вопросы по ядру языка.
  • Читать спецификацию ECMAScript и документацию MDN, свободно ориентируясь в терминологии языка.
  • Дебажить чужой и свой код, находить скрытые баги или утечки памяти.
  • Разрабатывать архитектуру, грамотно выбирая между функциональным подходом, классами и прототипным наследованием.
  • Анализировать поведение кода, предсказывать результат работы замыканий, hoisting, приведения типов и области видимости без необходимости запускать консоль.
  • Применять продвинутые структуры данных (Map, Set, WeakMap) и итераторы для оптимизации производительности приложений.
  • Управлять асинхронностью - писать предсказуемый код с промисами и async/await, понимать Event Loop и избегать блокировок главного потока.
  • Интегрировать внешние API: настраивать HTTP-запросы, грамотно парсить JSON и элегантно обрабатывать сетевые ошибки.
  • Использовать современный инструментарий (NPM, ES-модули, деструктуризацию) как в браузере, так и в среде Node.js.
Аудитория

Для кого этот курс

  • Программа подойдет:
  • Тем, кто никогда не программировал и хочет начать изучение JavaScript с нуля.
  • Студентам технических специальностей.
  • Тем, кто хочет стать frontend-разработчиком.
  • Тем, кто изучал JavaScript самостоятельно, но чувствует пробелы в знаниях.
  • Начинающим разработчикам, которые хотят глубже разобраться в языке.
  • Тем, кто планирует изучать React, Vue, Angular или другие современные технологии.
  • Всем, кто хочет понимать JavaScript не на уровне отдельных примеров, а на уровне устройства языка.
  • Особенно полезна программа будет тем, кто устал от коротких курсов, после которых остается ощущение, что многие важные темы остались за кадром.
Содержание

Программа курса

21 занятие
№ТемаЧто внутри
01Как начать учиться

- Что такое программа курсов

02JS - 1 [1.1] - Введение

- Про курс
- Что нужно сделать
- Про JavaScript
- Выбор браузера и редактора
- Подготовка к работе в VS Code
- Установка NodeJS
- Первая программа
- Открываем сайт с JavaScript
- Атрибуты async и defer
- Инструкции в коде

03JS - 1 [1.2] - Переменные

- Создание переменных
- Константы (const) и устаревшее var
- Правильные названия переменных
- Строгий режим - use strict
- Стиль кода
- Отладка кода

04JS - 1 [1.3] - Типы данных

- Обзор типов данных
- Оператор typeof и его нюансы
- Number - числовой тип данных
- Infinity, NaN и превращение числа в строку
- Превращение строки в число
- Неточность вычислений
- Округление чисел
- Минимальное, максимальное и случайное значения
- String - строки
- Углубление в строки
- BigInt - большие целые числа
- Boolean - булев тип данных
- Symbol - символ
- null и undefined
- Object - объекты
- Autoboxing

05JS - 1 [1.4] - Операторы

- Операторы и операнды
- Математические операторы
- Конкатенация
- Присваивание
- Инкремент, декремент и запятая
- Сравнение
- Сравнение строк
- И, Или, Не (AND, OR, NOT)
- Нюансы ИЛИ
- Нюансы И
- ?? - оператор нулевого слияния
- Приоритет и ассоциативность
- Побитовые операторы

06JS - 1 [1.5] - Ветвления

- Логика: if-else
- Тернарный оператор
- Неправильное использование тернарного оператора
- Конструкция switch
- Использование switch (true)
- Задача 1 - Тебе нравится JS?
- Задача 2 - Здороваемся по имени
- Задача 3 - Здороваемся по возрасту
- Задача 4 - Поиск по названию продукта
- Задача 5 - Отгадай число

07JS - 1 [1.6] - Функции

- Объявление функции
- Выражение функции
- Область видимости
- Блочная область видимости
- Функциональная область видимости
- Создание функции и scope
- Создание переменных с var
- Параметры функции
- Возвращение значений из функции
- "Правильные" функции
- Функция - это объект
- callback-функции
- Стрелочные функции
- Стек вызовов - callstack
- Рекурсия
- Углубление в рекурсию
- Именованное функциональное выражение - NFE
- Документирование с JSDoc
- Задача 1 - Полное имя
- Задача 2 - Функция-компаратор
- Задача 3 - Склонение слова по числу

08JS - 1 [1.7] - Массивы

- Введение в массивы
- Получение значений из массива
- Простые методы массива
- Неверное использование массива
- Многомерные массивы
- Создание через new Array() и изменение длины
- Сравнение массивов
- ... rest - Остаточные параметры
- ... spread синтаксис

09JS - 1 [1.8] - Циклы

- while
- do-while
- for
- break и continue
- Вложенные циклы
- Итерация по массиву
- for..in и for..of
- Итерация по многомерным массивам
- Задача 1 - Разворот массива
- Задача 2 - Заполни массив нулями до длины
- Задача 3 - Составляем массив до нуля
- Задача 4 - Рисуем паттерн
- Задача 5 - Получение ближайших максимальных чисел
- Задача 6 - Сортировка в случайном порядке
- Задача 7 - Проверка на правильность скобок

10JS - 1 [1.9] - Объекты

- Введение в объекты
- Вычисляемые названия и значения свойств
- Свойства прототипа
- Проверка существования свойства
- Что использовать, массив или объект?
- Методы
- Откуда берется контекст в методах
- Контекст в стрелочных функциях
- Названия для приватных свойств
- Вложенные объекты
- Объект в цикле for..in
- Object.keys, Object.values, Object.entries
- Цепочка методов
- Оператор опциональной последовательности
- Задача 1 - Превращаем массив в обычный объект
- Задача 2 - Ищем самый часто повторяющийся символ
- Задача 3 - Рефереры, подсчет вознаграждения

11JS - 2 [2.1] - Начало

- Приветствие
- Ошибки
- Дата и время
- JSON
- Деструктуризация
- setTimeout() и setInterval()
- Структуры Map и Set
- Каррирование

12JS - 2 [2.2] - Массивы

- Вспоминаем массивы
- Создание и проверка массивов
- Изменение элементов
- Поиск и проверка элементов
- Преобразование массива
- Сортировка, объединение и преобразование
- Агрегация
- Итерация
- Практика

13JS - 2 [2.3] - Объекты

- Свойства в объекте
- Копирование и клонирование объектов
- Тип Symbol
- Функции-генераторы и итераторы
- Сборщик мусора
- Контекст
- Методы call и apply
- Декораторы
- Метод bind
- Дескрипторы свойств
- Геттеры и сеттеры

14JS - 2 [2.4] - Функция-конструктор Object

- Про Object
- Методы для работы с объектами
- Методы для управления свойствами объекта
- Методы для работы с прототипами
- Методы для проверки и управления состоянием объекта
- Методы для работы с группировкой и сравнением

15JS - 2 [2.5] - ООП и функции-конструкторы

- Введение в ООП в JavaScript
- Про объекты и прототипы
- Проблема литеральных объектов
- Функции-конструкторы
- Использование прототипа
- Разница [[Prototype]], __proto__ и prototype
- Статические свойства
- Наследование свойств в функциях-конструкторах
- Наследование статических свойств
- Наследование методов в прототипах
- Запись в свойства объекта
- Цикл for..in и функции-конструкторы
- Геттеры и сеттеры для функций-конструкторов
- Переопределение методов
- Полифилы, расширение стандартных прототипов и автобоксинг
- Проверка вызова с new
- Нюансы при работе с функциями-конструкторами
- instanceof

16JS - 2 [2.6] - ООП и классы

- Классы
- Геттеры и сеттеры в классах
- Вычисляемые названия свойств и методов
- Статические свойства и методы
- Порядок свойств и методов в классе
- Наследование классов
- Наследование и порядок создания объекта
- Приватные методы и свойства
- Расширение нативных функций-конструкторов
- Абстрактные классы
- Миксины
- Пользовательские ошибки

17JS - 2 [2.7] - Модули

- Про модули
- export и import
- export default
- Реэкспорт
- Особенности и нюансы модулей

18JS - 2 [2.8] - Асинхронность

- Асинхронность в JavaScript
- callback-функции
- Промисы
- Промисы с then, catch и finally
- Промисы и цепочка методов
- Thenable интерфейс
- Создание отработанных промисов
- Обработка ошибок
- Перехват необработанных отклоненных промисов
- Статические методы Promise
- Промисификация
- async/await
- Нюансы async/await
- Асинхронные итераторы, генераторы и for..await
- Array.fromAsync()
- Динамические импорты
- Цикл событий - Event Loop
- Практика

19JS - 2 [2.9] - Npm

- Начало работы с npm
- Версионирование
- Публикация библиотек

20JS - 2 [2.10] - Работа с API

- Что такое HTTP и как он работает
- Структура HTTP-запроса
- Методы HTTP-запросов
- Что такое HTTPS
- Про API
- URL
- XMLHttpRequest
- Fetch
- Практика с fetch
- CORS
- Аутентификация и авторизация
- Аутентификация - практика
- ApiClient - практика

21Заключение

- Что дальше?

01Как начать учиться

- Что такое программа курсов

02JS - 1 [1.1] - Введение

- Про курс
- Что нужно сделать
- Про JavaScript
- Выбор браузера и редактора
- Подготовка к работе в VS Code
- Установка NodeJS
- Первая программа
- Открываем сайт с JavaScript
- Атрибуты async и defer
- Инструкции в коде

03JS - 1 [1.2] - Переменные

- Создание переменных
- Константы (const) и устаревшее var
- Правильные названия переменных
- Строгий режим - use strict
- Стиль кода
- Отладка кода

04JS - 1 [1.3] - Типы данных

- Обзор типов данных
- Оператор typeof и его нюансы
- Number - числовой тип данных
- Infinity, NaN и превращение числа в строку
- Превращение строки в число
- Неточность вычислений
- Округление чисел
- Минимальное, максимальное и случайное значения
- String - строки
- Углубление в строки
- BigInt - большие целые числа
- Boolean - булев тип данных
- Symbol - символ
- null и undefined
- Object - объекты
- Autoboxing

05JS - 1 [1.4] - Операторы

- Операторы и операнды
- Математические операторы
- Конкатенация
- Присваивание
- Инкремент, декремент и запятая
- Сравнение
- Сравнение строк
- И, Или, Не (AND, OR, NOT)
- Нюансы ИЛИ
- Нюансы И
- ?? - оператор нулевого слияния
- Приоритет и ассоциативность
- Побитовые операторы

06JS - 1 [1.5] - Ветвления

- Логика: if-else
- Тернарный оператор
- Неправильное использование тернарного оператора
- Конструкция switch
- Использование switch (true)
- Задача 1 - Тебе нравится JS?
- Задача 2 - Здороваемся по имени
- Задача 3 - Здороваемся по возрасту
- Задача 4 - Поиск по названию продукта
- Задача 5 - Отгадай число

07JS - 1 [1.6] - Функции

- Объявление функции
- Выражение функции
- Область видимости
- Блочная область видимости
- Функциональная область видимости
- Создание функции и scope
- Создание переменных с var
- Параметры функции
- Возвращение значений из функции
- "Правильные" функции
- Функция - это объект
- callback-функции
- Стрелочные функции
- Стек вызовов - callstack
- Рекурсия
- Углубление в рекурсию
- Именованное функциональное выражение - NFE
- Документирование с JSDoc
- Задача 1 - Полное имя
- Задача 2 - Функция-компаратор
- Задача 3 - Склонение слова по числу

08JS - 1 [1.7] - Массивы

- Введение в массивы
- Получение значений из массива
- Простые методы массива
- Неверное использование массива
- Многомерные массивы
- Создание через new Array() и изменение длины
- Сравнение массивов
- ... rest - Остаточные параметры
- ... spread синтаксис

09JS - 1 [1.8] - Циклы

- while
- do-while
- for
- break и continue
- Вложенные циклы
- Итерация по массиву
- for..in и for..of
- Итерация по многомерным массивам
- Задача 1 - Разворот массива
- Задача 2 - Заполни массив нулями до длины
- Задача 3 - Составляем массив до нуля
- Задача 4 - Рисуем паттерн
- Задача 5 - Получение ближайших максимальных чисел
- Задача 6 - Сортировка в случайном порядке
- Задача 7 - Проверка на правильность скобок

10JS - 1 [1.9] - Объекты

- Введение в объекты
- Вычисляемые названия и значения свойств
- Свойства прототипа
- Проверка существования свойства
- Что использовать, массив или объект?
- Методы
- Откуда берется контекст в методах
- Контекст в стрелочных функциях
- Названия для приватных свойств
- Вложенные объекты
- Объект в цикле for..in
- Object.keys, Object.values, Object.entries
- Цепочка методов
- Оператор опциональной последовательности
- Задача 1 - Превращаем массив в обычный объект
- Задача 2 - Ищем самый часто повторяющийся символ
- Задача 3 - Рефереры, подсчет вознаграждения

11JS - 2 [2.1] - Начало

- Приветствие
- Ошибки
- Дата и время
- JSON
- Деструктуризация
- setTimeout() и setInterval()
- Структуры Map и Set
- Каррирование

12JS - 2 [2.2] - Массивы

- Вспоминаем массивы
- Создание и проверка массивов
- Изменение элементов
- Поиск и проверка элементов
- Преобразование массива
- Сортировка, объединение и преобразование
- Агрегация
- Итерация
- Практика

13JS - 2 [2.3] - Объекты

- Свойства в объекте
- Копирование и клонирование объектов
- Тип Symbol
- Функции-генераторы и итераторы
- Сборщик мусора
- Контекст
- Методы call и apply
- Декораторы
- Метод bind
- Дескрипторы свойств
- Геттеры и сеттеры

14JS - 2 [2.4] - Функция-конструктор Object

- Про Object
- Методы для работы с объектами
- Методы для управления свойствами объекта
- Методы для работы с прототипами
- Методы для проверки и управления состоянием объекта
- Методы для работы с группировкой и сравнением

15JS - 2 [2.5] - ООП и функции-конструкторы

- Введение в ООП в JavaScript
- Про объекты и прототипы
- Проблема литеральных объектов
- Функции-конструкторы
- Использование прототипа
- Разница [[Prototype]], __proto__ и prototype
- Статические свойства
- Наследование свойств в функциях-конструкторах
- Наследование статических свойств
- Наследование методов в прототипах
- Запись в свойства объекта
- Цикл for..in и функции-конструкторы
- Геттеры и сеттеры для функций-конструкторов
- Переопределение методов
- Полифилы, расширение стандартных прототипов и автобоксинг
- Проверка вызова с new
- Нюансы при работе с функциями-конструкторами
- instanceof

16JS - 2 [2.6] - ООП и классы

- Классы
- Геттеры и сеттеры в классах
- Вычисляемые названия свойств и методов
- Статические свойства и методы
- Порядок свойств и методов в классе
- Наследование классов
- Наследование и порядок создания объекта
- Приватные методы и свойства
- Расширение нативных функций-конструкторов
- Абстрактные классы
- Миксины
- Пользовательские ошибки

17JS - 2 [2.7] - Модули

- Про модули
- export и import
- export default
- Реэкспорт
- Особенности и нюансы модулей

18JS - 2 [2.8] - Асинхронность

- Асинхронность в JavaScript
- callback-функции
- Промисы
- Промисы с then, catch и finally
- Промисы и цепочка методов
- Thenable интерфейс
- Создание отработанных промисов
- Обработка ошибок
- Перехват необработанных отклоненных промисов
- Статические методы Promise
- Промисификация
- async/await
- Нюансы async/await
- Асинхронные итераторы, генераторы и for..await
- Array.fromAsync()
- Динамические импорты
- Цикл событий - Event Loop
- Практика

19JS - 2 [2.9] - Npm

- Начало работы с npm
- Версионирование
- Публикация библиотек

20JS - 2 [2.10] - Работа с API

- Что такое HTTP и как он работает
- Структура HTTP-запроса
- Методы HTTP-запросов
- Что такое HTTPS
- Про API
- URL
- XMLHttpRequest
- Fetch
- Практика с fetch
- CORS
- Аутентификация и авторизация
- Аутентификация - практика
- ApiClient - практика

21Заключение

- Что дальше?

Организатор

Автор курса

StepikStepik
Stepik — образовательная платформа и конструктор онлайн-курсов. Мы разрабатываем алгоритмы адаптивного обучения, сотрудничаем с авторами MOOC, помогаем в проведении олимпиад и программ переподготовки. Наша цель — сделать образование открытым и удобным. Stepik — широко известная российская образовательная платформа, основанная в 2013 году. На Stepik зарегистрировано более миллиона пользователей из России и стран СНГ. В настоящее время на Stepik представлены несколько тысяч учебных курсов на самые разные темы.
Подробнее об авторе
Мнения учеников

Отзывы о курсе

Оставьте отзыв

Расскажите о качестве обучения, поддержке и результате. Это поможет другим выбрать организацию осознанно.

Напишите ваш коментарий, не менее 30 символов

Нажимая кнопку, вы даете согласие на обработку персональных данных

Оставьте заявку

Консультант ответит на вопросы о курсе «Программа: Твой JavaScript» и поможет разобраться в деталях обучения.

Комментарий ...

Нажимая кнопку, вы даете согласие на обработку персональных данных

Информация обновлена 14 сентября 2026 г.

Продолжить выбор

Похожие курсы

Разработка на Angular
−10%30 ноября
Разработка на Angular

Освойте промышленную разработку на Angular: создавайте динамические веб-приложения с нуля. Изучите TypeScript, компоненты, шаблоны, пайпы, сервисы, маршрутизацию и сложные формы.…

Онлайн13 занятийСредний
42 900 ₽−10%
38 610 ₽
Node js для Front End
4 месяца
Node js для Front End

Backend разработка на Node.js: Express.js, NestJS фреймворки. Работа с базами данных PostgreSQL, MongoDB. Создание REST API, аутентификация и авторизация. WebSockets для реального…

ОнлайнСредний
100 000 ₽от 5 555 ₽/мес на 18 мес.
Основы C#
Основы C#

Курс несомненно подойдёт начинающим разработчикам, который хотят освоить современный и востребованный язык программирования. Курс мы начнём с изучения основ - встроенных в язык ти…

Онлайн10 занятий
3 999 ₽
Начать без затрат

Бесплатные курсы

Python для решения практических задач
Бесплатно
Python для решения практических задач

Научились решать простые задачи на питоне, но не можете понять, как сделать что-то полезное? Наш курс научит вас правильно гуглить! На примерах задач сбора данных (Data Scraping)…

Онлайн5 занятий
Бесплатно
Python для геймеров: базовый курс на игровых примерах
Бесплатно4 часа в неделю
Python для геймеров: базовый курс на игровых примерах

Здесь не будет сложных задач «про шахматы»! Здесь не будет абстрактных задач и сложных математических вычислений. Зато есть: теория простым и понятным языком игровые механики логи…

Онлайн12 занятий
Бесплатно
Claude Code с нуля до реальных задач
Бесплатно1 месяц
Claude Code с нуля до реальных задач

Вы разовьёте аналитическое мышление, научитесь искать уязвимости и обеспечивать безопасность IT-систем. Освоите востребованную профессию даже с нулевым опытом в IT. Программа курс…

Онлайн
Бесплатноот 11 647 ₽/мес