Грокаем JavaScript

Разбор JavaScript изнутри: замыкания, this, прототипы, Событийный цикл и модули — в терминах спецификации ECMAScript и исходного кода V8, а не народных мифов.
Средний уровень
Сертификат Stepik

Чему вы научитесь

  • 📖 Читать спецификацию ECMAScript — находить алгоритмы IsStrictlyEqual, OrdinaryCallBindThis, ToPrimitive и понимать, что за ними стоит
  • 🔍 Объяснять JavaScript через V8 — понимать, как движок хранит строки, скрытые классы объектов и почему порядок свойств влияет на скорость
  • 🧠 Строить точные ментальные модели — замыкание через [[Environment]], this через [[ThisValue]], прототип через [[Prototype]]
  • 🔮 Предсказывать «странности» языка — почему typeof null === "object", почему NaN !== NaN, как работает приведение типов через алгоритмы спецификации
  • 🎯 Отвечать на вопросы собеседований на уровне реализации, а не пересказа статей
  • ⚙️ Объяснять асинхронность через очереди задач и микрозадач, Job Queues спецификации и Event Loop из HTML Living Standard

О курсе

«Грокаем JavaScript» — системный разбор языка в терминах спецификации ECMAScript и реализации V8. Не руководство по синтаксису, а исследование механики: почему JavaScript устроен именно так и какие конкретные проблемы решало каждое решение.

Курс начинается с честного предупреждения: он не поможет устроиться на работу за три месяца, не даст «дорожную карту до синьора» и не предлагает практических задач ради значков. Он покажет, как устроен язык. Это разные вещи.

Что разбирается в курсе:

🌐 Контекст и история Почему JavaScript появился именно таким, как он есть: 10 дней Брэндана Айка, броузерные войны, отношения ECMAScript и Web API. Где заканчивается язык и начинается среда исполнения.

🔢 Типы данных Примитивы и объекты в терминах спецификации. Почему народное определение «по значению vs по ссылке» ломается в d8. Алгоритмы ToPrimitive, IsLooselyEqual, IsStrictlyEqual. Почему typeof null === "object" — это не баг, а исторический артефакт.

🔒 Замыкания Проблема Фунарга и её решение через Environment Record. Скрытое поле [[Environment]]. Цепочка [[OuterEnv]]. Реализация в V8: Context objects, ScopeInfo. Почему замыкание — это не «функция, возвращающая функцию».

👆 Ключевое слово this this — не магия, а поле [[ThisValue]] в Function Environment Record. Пять способов вызова и алгоритм OrdinaryCallBindThis. Почему стрелочные функции не имеют собственного this.

🧱 Объекты и прототипы Объект как набор 13 внутренних методов: [[Get]][[Set]][[DefineOwnProperty]]. Обычные и экзотические объекты. Цепочка прототипов через [[Prototype]]. Скрытые классы V8 и почему порядок свойств влияет на производительность.

⚡ Событийный цикл JS-движок — однопоточный и синхронный. Event Loop описан не в ECMAScript, а в HTML Living Standard. Задачи и микрозадачи. Промисы в терминах спецификации: Promise Reactions, HostEnqueuePromiseJob. async/await как синтаксический сахар.

📦 Модули История от глобального пространства имён через IIFE и CommonJS до ES Modules. Почему каждая система появилась — какую конкретную боль решала. ES Modules в спецификации: Module Environment Record, статический анализ, живые привязки.

Каждую концепцию автор объясняет по одной схеме: сначала боль, которую она решает — потом народное (неправильное) объяснение — потом спецификация или исходный код — потом код как доказательство.

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

👨‍💻 Разработчик с опытом в JavaScript Вы пишете JS или TypeScript в реальных проектах, но чувствуете, что некоторые вещи работают «как-то так» — замыкания, this, асинхронность. Этот курс переводит интуицию в точное понимание. 🎯 Готовитесь к техническому собеседованию В крупных компаниях задают вопросы про [[Prototype]], замыкания через спецификацию, порядок выполнения микрозадач. Пересказать статью с Хабра там не получится. 😤 Устали от поверхностных объяснений Видео «Event Loop за 10 минут» — это потребление, не обучение. Курс построен по-другому: первоисточники, исходный код, исторический контекст каждого решения. 🔬 Хотите читать спецификацию Курс не пересказывает ECMAScript — он учит в ней ориентироваться. После курса вы сможете открыть нужный раздел и найти ответ самостоятельно.

Начальные требования

  • ✅ Рабочий опыт с JavaScript — писали реальный код, знакомы с функциями, объектами, массивами, промисами
  • ✅ Базовое понимание броузера — что такое DOM, как загружается страница
  • ✅ Готовность читать спецификации и исходный код без упрощений

TypeScript в курсе не нужен. Знание других языков будет плюсом при разборе исторического контекста — но не обязательно.

Если вы только начинаете программировать — этот курс будет сложным. Он рассчитан на тех, кто уже пишет JavaScript и хочет понять, как он работает, а не научиться синтаксису с нуля.

Наши преподаватели

Как проходит обучение

📹 Видеоуроки с разбором концепций на инженерном языке — с открытой спецификацией, исходным кодом V8 и без мотивационных вставок

📝 Текстовые материалы со ссылками на разделы ECMAScript, исходный код движков и оригинальные статьи создателей технологий

💬 Комментарии к урокам — задавайте вопросы напрямую автору, автор отвечает на все комментарии

🔓 Несколько уроков открыты бесплатно — посмотрите до записи и убедитесь, что формат подходит

⏱️ Без дедлайнов — проходите в своём темпе, доступ бессрочный

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

загружаем...
Certificate

Сертификат

Stepik

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

  • 🧠 Точная ментальная модель JavaScript — не набор правил, которые нужно запомнить, а понимание механики, из которой правила следуют
  • 📖 Умение читать спецификацию — после курса ECMAScript перестаёт быть страшным документом
  • 💼 Готовность к техническому собеседованию — умеете объяснить замыкания, this, прототипы и Event Loop на уровне реализации
  • ♾️ Бессрочный доступ ко всем материалам курса

Сколько стоит обучение

Price: 4 999 
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям

Price: 4 999