Чему вы научитесь
- 📖 Читать спецификацию 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 — писали реальный код, знакомы с функциями, объектами, массивами, промисами
- ✅ Базовое понимание броузера — что такое DOM, как загружается страница
- ✅ Готовность читать спецификации и исходный код без упрощений
TypeScript в курсе не нужен. Знание других языков будет плюсом при разборе исторического контекста — но не обязательно.
Если вы только начинаете программировать — этот курс будет сложным. Он рассчитан на тех, кто уже пишет JavaScript и хочет понять, как он работает, а не научиться синтаксису с нуля.
Наши преподаватели
Как проходит обучение
📹 Видеоуроки с разбором концепций на инженерном языке — с открытой спецификацией, исходным кодом V8 и без мотивационных вставок
📝 Текстовые материалы со ссылками на разделы ECMAScript, исходный код движков и оригинальные статьи создателей технологий
💬 Комментарии к урокам — задавайте вопросы напрямую автору, автор отвечает на все комментарии
🔓 Несколько уроков открыты бесплатно — посмотрите до записи и убедитесь, что формат подходит
⏱️ Без дедлайнов — проходите в своём темпе, доступ бессрочный
Программа курса
Сертификат
Что вы получаете
- 🧠 Точная ментальная модель JavaScript — не набор правил, которые нужно запомнить, а понимание механики, из которой правила следуют
- 📖 Умение читать спецификацию — после курса ECMAScript перестаёт быть страшным документом
- 💼 Готовность к техническому собеседованию — умеете объяснить замыкания, this, прототипы и Event Loop на уровне реализации
- ♾️ Бессрочный доступ ко всем материалам курса