Що таке область видимості (scope)?
Область видимості (scope) - це механізм у JavaScript, який визначає, де в коді доступні змінні та функції (тобто в яких частинах програми до них можна звернутися).
Основні види областей видимості
1. Глобальна область (Global Scope)
Змінні, оголошені поза функціями або блоками, доступні всюди в коді.
let name = 'Tim'; // глобальна змінна
function greet() {
console.log('Hello, ' + name); // доступна тут
}
greet(); // Hello, Tim
console.log(name); // теж доступна тут2. Функціональна область (Function Scope)
Змінні, оголошені за допомогою var, let або const всередині функції, доступні тільки всередині цієї функції.
function example() {
let message = 'Inside function';
console.log(message); // працює
}
example();
console.log(message); // Помилка: message is not defined3. Блочна область (Block Scope)
Змінні, оголошені за допомогою let або const всередині блока { }, доступні тільки всередині цього блока.
if (true) {
const x = 10;
let y = 20;
var z = 30; // var не має блочної області
}
console.log(z); // 30 (var видно за межами блока)
console.log(x); // Помилка
console.log(y); // Помилка4. Лексична область (Lexical Scope)
JavaScript використовує лексичну (статичну) область видимості - це означає, що доступ до змінних визначається розташуванням функцій у коді, а не тим, де їх викликають.
function outer() {
const outerVar = 'Я зовні';
function inner() {
console.log(outerVar); // має доступ до outerVar
}
return inner;
}
const fn = outer();
fn(); // "Я зовні"Тут
innerзапам'ятала оточення, в якому була створена - це і є замикання (closure).
Підсумок
| Тип області видимості | Де створюється | Доступність |
|---|---|---|
| Глобальна | Поза функціями і блоками | Всюди |
| Функціональна | Всередині функції | Тільки всередині функції |
| Блочна | Всередині { } (if, for тощо) | Тільки в межах блока |
| Лексична | На етапі написання коду | Доступ до змінних із зовнішніх областей |
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.