Область видимости означает видимость и существование переменной. Переменная, объявленная в области видимости, не видна за ее пределами.

Теперь давайте узнаем о глобальной области видимости. Переменная, определенная вне всех функций или блоков, имеет глобальную область действия. Доступ к этой переменной можно получить из любого места в коде. Эта переменная называется глобальной и доступна во время существования приложения.

Мы также можем использовать глобальный объект окна для определения глобальной переменной. Давайте посмотрим на это на примере.

window.Global_Data = 5;

Теперь к этой переменной Global_Data можно получить доступ из любого места в коде.

Теперь давайте перейдем к пониманию области действия функции. Параметры и переменные, определенные в функции, находятся в области действия функции, что означает, что к ним можно получить доступ из любой точки внутри функции, но они недоступны вне функции. Давайте посмотрим на пример этого:

(function exampleFunc() {
  const a = 1;
})();
console.log(a);
Output:
Uncaught ReferenceError: a is not defined.

Теперь давайте узнаем кое-что более интересное. Как известно, в JavaScript переменные могут быть объявлены тремя способами — var, let и const. Если мы объявим переменные с помощью var, то они будут иметь область действия функции, а также будут подняты на вершину их области видимости. Именно поэтому они доступны еще до того, как будут объявлены. Давайте посмотрим на это на примере кода:

(function exampleFunc() {
  console.log(a);
  var x = 5;
})();
Output:
undefined

Но совсем другое происходит с переменными, объявленными с помощью let. Мы можем получить доступ к переменной, объявленной с помощью let, только после ее определения. Давайте посмотрим на это на примере кода:

(function exampleFunc() {
  console.log(a);
  let a = 1;
})();
Output:
Uncaught ReferenceError: a is not defined

Более того, переменная, объявленная с помощью var, может быть повторно объявлена ​​несколько раз в одной и той же области видимости. Однако это невозможно с переменными, объявленными с помощью let или const в одной и той же области видимости.

Пришло время узнать о области видимости блока. Если мы объявляем переменные внутри фигурных скобок, то доступ к этим переменным вне этих фигурных скобок будет невозможен. Это называется областью действия блока. Переменные, которые мы объявляем с помощью let и const, имеют блочную область видимости. Они доступны только в том блоке, в котором они определены. Принимая во внимание, что переменные, объявленные с помощью var, не имеют области действия блока. Давайте посмотрим на это на примере кода:

const a = 1;
let b = 2;
{
  const a = 5;
  let b = 6;
}
console.log(a);
console.log(b);
Output:
1
2

Давайте посмотрим на этот пример с переменной, объявленной с помощью var.

var c = 3;
{
  var c = 7;
}
console.log(c);
Output:
7

Таким образом, переменные, которые мы определяем в глобальной области видимости, доступны везде в коде, тогда как переменные, определенные в области действия функции, доступны везде внутри этой функции. И переменные, которые мы объявляем с помощью let и const, имеют область действия блока, тогда как переменные, объявленные с помощью var, не имеют области действия блока.