Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке область видимості (scope)?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Область видимості (scope)** - це механізм у JavaScript, який визначає, **де в коді доступні змінні та функції** (тобто в яких частинах програми до них можна звернутися). **Ключове:** Розрізняють глобальну, функціональну, блочну та лексичну області видимості - кожна визначає різні межі доступності змінних.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Область видимості (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 тощо) | Тільки в межах блока | | **Лексична** | На етапі написання коду | Доступ до змінних із зовнішніх областей |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.