Итоги курса
Курс о функциях и замыканиях в JavaScript.
Что ты узнал
- Объявление — declaration, expression, arrow, hoisting
- Параметры — дефолты, rest, деструктуризация, spread
- Область видимости — глобальная, функциональная, блочная
- Замыкания — функция + внешние переменные
- this — правила определения контекста
- call, apply, bind — управление
this - Рекурсия — база и шаг, стек, мемоизация
- Каррирование — цепочка и частичное применение
- Чистые функции — без побочных эффектов
- Функции высшего порядка — принимают и возвращают функции
- Утилиты —
debounce,throttle,once,memoize
Ключевые идеи
Замыкание — фундамент. Многие паттерны (счётчики, приватные данные, мемоизация) — на замыканиях.
this зависит от вызова. Не от объявления. Стрелочные захватывают из внешней области.
bind — для фиксации контекста. Стрелочные функции — современная альтернатива.
Чистые функции — легче. Тестировать, отлаживать, кешировать.
Рекурсия для деревьев. Для циклов — цикл.
Функции высшего порядка — сила. map, filter, reduce, pipe, compose.
Частые ошибки
- Создавать функции в цикле без
let - Путать
callиapply - Забыть
bindв обработчике - Использовать
thisв стрелочной функции - Бесконечная рекурсия без базы
- Мутировать аргументы
- Создавать глобальные переменные
argumentsвместо rest
Что дальше
- Классы — прототипы, наследование
- Генераторы —
function*,yield - Итераторы — протокол
Symbol.iterator - Async-генераторы —
for await...of - Функциональное программирование — продвинуто
Полезные ссылки
- MDN Functions: developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Functions
- javascript.info — учебник
- You Don't Know JS — серия книг
- Functional-Light JavaScript — Kyle Simpson
Заключение
Функции — основная единица JavaScript. Понимание замыканий, this, чистых функций и утилит отличает новичка от опытного разработчика. Функциональный стиль с map, filter, reduce, pipe делает код читаемым и предсказуемым. Правила: чистые функции, замыкания для приватности, утилиты для повторяющихся паттернов.