Практический смысл
Scope — правила, где имя переменной/функции видно и к какой привязке оно относится.
JS использует лексическую (статическую) область видимости: доступ определяется местом объявления в коде, а не местом вызова.
Виды scope
- Global — top-level скрипта/модуля.
- Function — параметры и
var/function внутри функции.
- Block —
let/const/class в { }, for, if.
- Module — top-level ES-модуля изолирован от других модулей.
const g = 1;
function outer() {
const a = 2;
if (true) {
const b = 3;
console.log(g, a, b);
}
}
Цепочка областей: внутренний scope ищет имя у себя, затем во внешнем (scope chain) — основа замыканий.
На собеседовании
Лексический scope ≠ динамический; разница var vs let; связь scope chain ↔ closures.