Мы используем 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%14 сентября
Разработка на 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 ₽/мес
Markdown синтаксис
Бесплатно2 часа
Markdown синтаксис

Этот курс предназначен для всех, кто работает с текстом в digital-среде. Вы освоите Markdown — универсальный язык разметки, который используют в GitHub, документации, блогах и соо…

Онлайн3 занятий
Бесплатно