У цьому посібнику ви дізнаєтеся про область змінних у JavaScript за допомогою прикладів.
Область дії стосується наявності змінних та функцій у певних частинах коду.
У JavaScript змінна має два типи сфери дії:
- Глобальний обсяг
- Місцевий обсяг
Глобальний обсяг
Змінна, оголошена вгорі програми або поза функцією, вважається глобальною змінною області дії.
Давайте подивимось приклад глобальної змінної області дії.
// program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello
У наведеній вище програмі змінна a оголошена у верхній частині програми та є глобальною змінною. Це означає, що змінну a
можна використовувати де завгодно в програмі.
Значення глобальної змінної можна змінювати всередині функції. Наприклад,
// program to show the change in global variable let a = "hello"; function greet() ( a = 3; ) // before the function call console.log(a); //after the function call greet(); console.log(a); // 3
У наведеній вище програмі змінна a є глобальною змінною. Значення a - привіт. Тоді доступ до змінної a відбувається всередині функції, і значення змінюється на 3.
Отже, значення зміни змінюється після зміни його всередині функції.
Примітка : Рекомендується уникати використання глобальних змінних, оскільки значення глобальної змінної може змінюватися в різних областях програми. Це може внести невідомі результати в програму.
У JavaScript змінну також можна використовувати, не оголошуючи її. Якщо змінна використовується без її оголошення, ця змінна автоматично стає глобальною змінною.
Наприклад,
function greet() ( a = "hello" ) greet(); console.log(a); // hello
У наведеній вище програмі змінна a є глобальною змінною.
Якщо змінну оголошено за допомогою let a = "hello"
, програма видасть помилку.
Примітка : У JavaScript існує така "strict mode";
змінна, яка не може бути використана без її оголошення. Щоб дізнатись більше про строге, відвідайте JavaScript Strict.
Місцевий обсяг
Змінна також може мати локальний обсяг, тобто доступ до неї можливий лише у межах функції.
Приклад 1: Змінна локального обсягу
// program showing local scope of a variable let a = "hello"; function greet() ( let b = "World" console.log(a + b); ) greet(); console.log(a + b); // error
Вихідні дані
helloWorld Uncaught ReferenceError: b не визначено
У наведеній вище програмі змінна a є глобальною, а змінна b - локальною. Змінна b може бути доступна лише всередині функції greet. Отже, коли ми намагаємось отримати доступ до змінної b поза функцією, виникає помилка.
нехай це Block Scoped
let
Ключове слово блок-область дії (змінна може бути доступна тільки в негайному блоці).
Приклад 2: змінна з масштабом блоку
// program showing block-scoped concept // global variable let a = 'Hello'; function greet() ( // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') ( // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); ) // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c); ) greet();
Вихідні дані
Hello World Hello World hello Uncaught ReferenceError: x не визначено
У наведеній вище програмі змінна
- a - глобальна змінна. До нього можна отримати доступ у будь-якій точці програми.
- b - локальна змінна. Доступ до нього можливий лише всередині функції
greet
. - c - змінна з блоковим обсягом. Доступ до нього можливий лише всередині
if
блоку операторів.
Отже, у наведеній вище програмі перші дві console.log()
працюють без жодних проблем.
Однак ми намагаємось отримати доступ до змінної c, що охоплює блок, за межами блоку в третій console.log()
. Це призведе до помилки.
Примітка : У JavaScript var
це функція і область let
блоку. Якщо ви спробуєте використати var c = 'hello';
всередині if
оператора у наведеній вище програмі, вся програма працює, оскільки c трактується як локальна змінна.
Щоб дізнатись більше про let
проти var
, відвідайте JavaScript let vs var.