foundation
Объявления и выражения функций
Hoisting объявлений, момент присваивания выражений, именованные функции и stack traces.
Объявления функций создают поднятую привязку, вызываемую до текстовой позиции. Выражения функций — значения, присваиваемые в runtime — анонимные или именованные. Именованные выражения улучшают stack traces и позволяют рекурсию без глобального имени.
`const fn = function named() {}` нельзя вызвать до строки, потому что `const` следует правилам TDZ.
Объявления внутри блоков в старых окружениях ведут себя непредсказуемо; для переносимости предпочитайте выражения на `let`/`const`.
На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и производительностью или между безопасностью и удобством.
Чеклист:
- Определите declaration vs expression.
- Объясните различия hoisting.
- Предпочитайте именованные выражения для отладки.