Змінна сфера JavaScript (з прикладами)

У цьому посібнику ви дізнаєтеся про область змінних у JavaScript за допомогою прикладів.

Область дії стосується наявності змінних та функцій у певних частинах коду.

У JavaScript змінна має два типи сфери дії:

  1. Глобальний обсяг
  2. Місцевий обсяг

Глобальний обсяг

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

Давайте подивимось приклад глобальної змінної області дії.

 // 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.

Цікаві статті...