foundation

Hoisting и привязки

var, let, const, объявления функций, temporal dead zone и момент инициализации.

Hoisting означает, что объявления обрабатываются до выполнения. Объявления `function` полностью поднимаются и вызываемы до своей строки. `var` поднимается и инициализируется как `undefined`. `let` и `const` поднимаются, но живут в temporal dead zone до инициализации — раннее чтение выбрасывает `ReferenceError`.

					console.log(kind);
let kind = 'module'; // ReferenceError
				

`const` запрещает перепривязку переменной, но не мутацию содержимого объекта. Function expression на `const` следует TDZ до присваивания.

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

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

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

Чеклист:

  • Разделяйте объявление и инициализацию.
  • Знайте function scope у var и block scope у let/const.
  • Объясните TDZ и разницу const binding vs мутация объекта.