Skip to main content

Що таке область видимості (scope)?

Область видимості (scope) - це механізм у JavaScript, який визначає, де в коді доступні змінні та функції (тобто в яких частинах програми до них можна звернутися).


Основні види областей видимості

1. Глобальна область (Global Scope)

Змінні, оголошені поза функціями або блоками, доступні всюди в коді.

javascript
let name = 'Tim'; // глобальна змінна function greet() { console.log('Hello, ' + name); // доступна тут } greet(); // Hello, Tim console.log(name); // теж доступна тут

2. Функціональна область (Function Scope)

Змінні, оголошені за допомогою var, let або const всередині функції, доступні тільки всередині цієї функції.

javascript
function example() { let message = 'Inside function'; console.log(message); // працює } example(); console.log(message); // Помилка: message is not defined

3. Блочна область (Block Scope)

Змінні, оголошені за допомогою let або const всередині блока { }, доступні тільки всередині цього блока.

javascript
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 використовує лексичну (статичну) область видимості - це означає, що доступ до змінних визначається розташуванням функцій у коді, а не тим, де їх викликають.

javascript
function outer() { const outerVar = 'Я зовні'; function inner() { console.log(outerVar); // має доступ до outerVar } return inner; } const fn = outer(); fn(); // "Я зовні"

Тут inner запам'ятала оточення, в якому була створена - це і є замикання (closure).


Підсумок

Тип області видимостіДе створюєтьсяДоступність
ГлобальнаПоза функціями і блокамиВсюди
ФункціональнаВсередині функціїТільки всередині функції
БлочнаВсередині { } (if, for тощо)Тільки в межах блока
ЛексичнаНа етапі написання кодуДоступ до змінних із зовнішніх областей

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.