JavaScript Documentation
Concise, example-driven JavaScript reference. Read the concept, see the code, then practice it in a Coddy journey.
Start a guided JavaScript journeyНачало работы
- Что такое JavaScriptРазбираемся, что такое JavaScript, где он работает, для чего нужен и чем отличается от Java и TypeScript. Понятное введение для новичков.
- Запуск JSРазбираем рабочие способы запустить JavaScript в 2026 году: консоль браузера, тег script в HTML, Node.js из терминала — и когда какой вариант удобнее.
- Синтаксис и ;Разбираем синтаксис JavaScript — инструкции, блоки, выражения — и честно говорим про точки с запятой: как работает ASI и где он реально подставляет подножку.
- Strict modeРазбираемся, что меняет строгий режим в JavaScript, как его включить и почему в современных модулях и классах он работает сам по себе.
- КомментарииРазбираемся, как работают комментарии в JavaScript: `//` для одной строки, `/* */` для блока и привычки, которые делают комментарии полезными, а не мусором в коде.
Переменные и типы
- let, const, varТри способа объявить переменную в JavaScript — и почему в современном коде по умолчанию идёт `const`, при необходимости `let`, а `var` практически не встречается.
- Примитивы JSРазбираем семь примитивных типов JavaScript — string, number, bigint, boolean, null, undefined и symbol — и показываем, чем они отличаются от объектов.
- СтрокиРазбираемся, как устроены строки в JavaScript: кавычки, бэктики, интерполяция, многострочный текст и методы, которыми реально пользуешься каждый день.
- Number и BigIntРазбираемся, как на самом деле устроен тип Number в JavaScript: почему 0.1 + 0.2 ≠ 0.3, что такое MAX_SAFE_INTEGER и когда пора переходить на BigInt.
- null и undefinedРазбираемся, чем null отличается от undefined в JavaScript, как корректно проверить переменную на оба значения и что из этого стоит использовать в своём коде.
- Приведение типовКак JavaScript приводит значения к нужному типу: неявные правила, из-за которых валятся проверки, явные преобразования, которым стоит отдавать предпочтение, и что когда срабатывает.
- Операторы сравненияРазбираемся, как в JavaScript работает сравнение: строгое и нестрогое равенство, подводные камни ==, поведение NaN и объектов, а также когда стоит взять Object.is.
Поток управления
- ОператорыРазбираем операторы JavaScript — арифметические, сравнения, логические, присваивания и не только. С теми подводными камнями, на которые реально натыкаешься в коде.
- if / elseКак работает if/else в JavaScript: условия, цепочки else if, тонкости с truthy/falsy и когда лучше использовать тернарный оператор.
- switchРазбираем оператор switch в JavaScript: как работают case, break, default, что такое проваливание (fallthrough) и когда switch удобнее цепочки if/else.
- Цикл forРазбираем классический цикл `for` в JavaScript: три части заголовка, перебор массивов, операторы break и continue, вложенные циклы и типичные ошибки.
- Цикл whileРазбираемся, как работают циклы `while` и `do...while` в JavaScript: когда их брать вместо `for` и как не словить бесконечный цикл.
- for...of и for...inРазбираемся, чем на самом деле отличаются for...of и for...in в JavaScript: значения против ключей, массивы против объектов и когда какой цикл уместнее.
- Truthy и FalsyРазбираем, какие значения в JavaScript считаются truthy, а какие falsy, полный список falsy-значений и как работает приведение к boolean на практике.
Итерация
- Итераторы и генераторыРазбираемся, как устроен протокол итераторов в JavaScript, как сделать свой объект итерируемым и почему с генераторами вся эта история становится проще.
- SymbolРазбираемся, что такое примитив Symbol в JavaScript, зачем он нужен и как well-known символы вроде Symbol.iterator позволяют встроить свои объекты в язык.
Функции
- Объявление функцийРазбираемся, как объявлять функции в JavaScript: ключевое слово function, параметры, return, всплытие (hoisting) и когда выбрать declaration, а когда expression.
- Стрелочные функцииРазбираемся, как работают стрелочные функции в JavaScript: синтаксис `=>`, неявный возврат, поведение `this` и когда лучше оставить обычный `function`.
- Параметры функцийРазбираемся, как работают параметры функций в JavaScript: значения по умолчанию, срабатывание на undefined, порядок вычисления и чем параметры отличаются от аргументов.
- Rest и SpreadРазбираемся, как работает оператор ... в JavaScript: rest собирает аргументы функции, spread разворачивает массивы и объекты. Показываю, когда что применять.
- ЗамыканияЗамыкание — это функция, которая помнит переменные из своего окружения. Разбираем, как работают замыкания в JavaScript, на живых примерах и реальных задачах.
- Ключевое слово thisРазбираемся, как на самом деле работает `this` в JavaScript: четыре правила привязки, почему стрелочные функции ведут себя иначе и как не наступить на классические грабли с `this is undefined`.
- Функции высшего порядкаРазбираемся с функциями высшего порядка в JavaScript: как передавать функции в аргументы, возвращать их из других функций и использовать map, filter и reduce на практике.
Объекты и массивы
- ОбъектыРазбираемся, как устроены объекты в JavaScript: создание, чтение и запись свойств, добавление методов и приёмы, которые помогают держать код в порядке.
- МассивыРазбираемся с массивами в JavaScript: как создавать, обращаться по индексу, работать с length, push/pop, в чём разница slice и splice, и как перебирать без боли.
- ДеструктуризацияРазбираемся, как работает деструктуризация в JavaScript: достаём значения из объектов и массивов, переименовываем, задаём значения по умолчанию, работаем с вложенностью и параметрами функций.
- Spread объектовРазбираем оператор spread для объектов в JavaScript: как клонировать, объединять, переопределять свойства и не попасться на поверхностном копировании.
- Методы массивовМетоды массивов, которые заменяют большинство циклов for: map, filter, reduce, find, some, every — и разбираемся, какие из них мутируют массив, а какие возвращают новый.
- Map и SetРазбираемся, как устроены Map и Set в JavaScript, чем они отличаются от обычных объектов и массивов и в каких случаях их реально стоит использовать.
- JSONРазбираем работу с JSON в JavaScript: как превратить объект в строку через JSON.stringify и обратно через JSON.parse, зачем нужны replacer и reviver, и какие значения теряются при сериализации.
- Optional ChainingКак оператор `?.` помогает добираться до вложенных свойств, элементов массива и методов, не падая на `null` и `undefined`.
- Оператор ??Как оператор `??` подставляет значение по умолчанию только когда слева `null` или `undefined` — и почему он удобнее `||` в большинстве реальных задач.
Классы и прототипы
- КлассыРазбираемся, как на самом деле устроены классы в JavaScript: конструктор, методы, свойства экземпляра, геттеры и сеттеры — и что скрывается за ключевым словом `class`.
- НаследованиеРазбираемся, как работает наследование в классах JavaScript: ключевое слово extends, вызов super, переопределение методов и когда вместо наследования лучше взять композицию.
- Статические членыРазбираемся, как работают статические методы и свойства классов в JavaScript: ключевое слово `static`, поведение `this`, фабричные методы и наследование.
- Приватные поляРазбираем, как префикс `#` делает поля и методы класса по-настоящему приватными в JavaScript — синтаксис, правила и почему подчёркивания уже недостаточно.
- ПрототипыРазбираемся, что такое прототипы в JavaScript, как работает цепочка прототипов при поиске свойств и как синтаксис `class` ложится на этот же механизм под капотом.
Асинхронный JavaScript
- Event LoopРазбираем event loop в JavaScript: call stack, очередь задач и очередь микрозадач — и как всё это крутится вместе, чтобы асинхронный код не блокировал поток.
- CallbacksРазбираемся, как работают callback-функции в JavaScript: передача функций как аргументов, паттерн error-first и почему вложенные колбэки довели разработчиков до промисов.
- ПромисыРазбираемся, как устроены промисы в JavaScript: три состояния, цепочки через then и catch, параллельный запуск через Promise.all и создание своих промисов через new Promise.
- async/awaitРазбираемся, как на самом деле работают async/await в JavaScript: асинхронные функции, await, обработка ошибок через try/catch и параллельный запуск задач через Promise.all.
- Fetch APIРазбираемся с Fetch API в JavaScript: GET- и POST-запросы, парсинг JSON, грамотная обработка ошибок и отмена зависших запросов через AbortController.
- Ошибки в asyncРазбираемся, как ошибки на самом деле ходят по асинхронному коду: try/catch с await, .catch у промисов и типичные ловушки, из-за которых падения остаются незамеченными.
Модули и инструменты
- ES-модулиРазбираемся, как работают ES-модули в JavaScript: именованные и default-экспорты, синтаксис import, динамический import() и чем модули отличаются от обычных скриптов.
- CommonJS и ESMДве системы модулей в JavaScript: зачем нужны обе, чем отличаются require и import и что выбирать в проектах на Node.js.
- Основы npmРазбираемся, как на самом деле работает npm: установка пакетов, npm init, dev-зависимости, обновления и что вообще творится внутри node_modules и lock-файла.
- package.jsonРазбираем package.json по полочкам: какие поля реально важны, как работают scripts и что означают semver-диапазоны при установке пакетов.
- Node.js runtimeРазбираемся, что такое Node.js runtime, чем он отличается от браузера и какие встроенные API — globals, модули, process, fs — делают серверный JavaScript возможным.
Ошибки и отладка
- try/catchРазбираем try/catch/finally в JavaScript: как ловить ошибки, что внутри объекта error, когда пробрасывать исключение дальше и где try/catch — не лучший выбор.
- Типы ошибокРазбираемся во встроенных типах ошибок JavaScript: что означает каждый, когда он выскакивает и как читать сообщение, не гадая на кофейной гуще.
- Console и DevToolsРазбираем методы console и фишки DevTools, которые ускоряют отладку JavaScript в разы — без хаоса из console.log по всему коду.
Работа с реальными данными
- Regex в JSРазбираемся, как работают регулярные выражения в JavaScript: два способа создать паттерн, методы test, match и replace, флаги и группы захвата — всё на живых примерах.
- Даты и времяРазбираемся, как на самом деле работает объект Date в JavaScript: создание дат, форматирование, арифметика, таймзоны и подводные камни, на которых спотыкаются почти все.
- URL и query-параметрыРазбираем, как парсить, собирать и менять URL в JavaScript через `URL` и `URLSearchParams` — без регулярок и без подводных камней с кодированием.