Урок 12

Итоги курса

Курс о функциях и замыканиях в 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 делает код читаемым и предсказуемым. Правила: чистые функции, замыкания для приватности, утилиты для повторяющихся паттернов.