Область действия переменной 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.

Следовательно, значение a изменяется после его изменения внутри функции.

Примечание . Рекомендуется избегать использования глобальных переменных, поскольку значение глобальной переменной может изменяться в разных областях программы. Это может привести к неизвестным результатам в программе.

В 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 вне функции, возникает ошибка.

let is 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 рассматривается как локальная переменная.

Чтобы узнать больше о letversus var, посетите JavaScript let vs var.

Интересные статьи...