StudyCode
Функции, которые «помнят» переменные из внешней области видимости.
JavaScript использует лексическую область видимости — функция видит переменные той области, где она объявлена, а не где вызывается.
const x = 10;
function outer() {
const y = 20;
function inner() {
const z = 30;
console.log(x, y, z); // 10, 20, 30 — видит всё
}
inner();
// console.log(z); // ошибка! z не видна здесь
}
// console.log(y); // ошибка! y не видна здесьКогда JS ищет переменную, он идёт по цепочке вверх — от текущей функции к внешней, и так до глобальной.
const global = "я глобальная";
function level1() {
const l1 = "я в level1";
function level2() {
const l2 = "я в level2";
console.log(global); // ✓ найдено в глобальной области
console.log(l1); // ✓ найдено в level1
console.log(l2); // ✓ найдено локально
}
}