foundation

Объявления и выражения функций

Hoisting объявлений, момент присваивания выражений, именованные функции и stack traces.

Объявления функций создают поднятую привязку, вызываемую до текстовой позиции. Выражения функций — значения, присваиваемые в runtime — анонимные или именованные. Именованные выражения улучшают stack traces и позволяют рекурсию без глобального имени.

`const fn = function named() {}` нельзя вызвать до строки, потому что `const` следует правилам TDZ.

Объявления внутри блоков в старых окружениях ведут себя непредсказуемо; для переносимости предпочитайте выражения на `let`/`const`.

На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.

Типовые ошибки: путать похожие API и забывать edge cases в live coding.

Компромисс часто между ясностью и производительностью или между безопасностью и удобством.

Чеклист:

  • Определите declaration vs expression.
  • Объясните различия hoisting.
  • Предпочитайте именованные выражения для отладки.