логотип PurpleSchool
логотип PurpleSchool

Область видимости в JavaScript

Автор

Дмитрий Нечаев

Область видимости в JavaScript определяет доступность переменных в разных частях кода. Не все переменные одинаково доступны — это зависит от того, где они были объявлены. Давайте разберёмся, как работает область видимости в JavaScript и почему некоторые переменные доступны, а некоторые — нет.

Глобальная область видимости

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

var globalVar = "Глобальная переменная";

function greet() {
  console.log(globalVar); // Выведет "Глобальная переменная"
}

greet();

Локальная область видимости

Переменные, объявленные внутри функции, находятся в локальной области видимости и доступны только внутри этой функции.

function greet() {
  var localVar = "Локальная переменная";
  console.log(localVar);
}

greet(); // Выведет "Локальная переменная"
console.log(localVar); // Ошибка: localVar is not defined

Понятие блочной области видимости

ES6 (ECMAScript 2015) ввёл понятие блочной области видимости с использованием ключевых слов let и const. Переменные, объявленные с помощью let или const, имеют блочную область видимости и доступны только в блоке, в котором были объявлены.

if (true) {
  let blockVar = "Переменная в блоке";
  console.log(blockVar); // Выведет "Переменная в блоке"
}

console.log(blockVar); // Ошибка: blockVar is not defined

Замыкания

Замыкание в JavaScript — это комбинация функции и лексической области видимости, в которой она была определена. Это позволяет функции сохранять доступ к переменным из области видимости родительской функции даже после того, как родительская функция завершила выполнение.

function outer() {
  var outerVar = "Внешняя переменная";

  function inner() {
    console.log(outerVar); // inner() имеет доступ к outerVar из области видимости функции outer()
  }

  return inner;
}

var innerFunc = outer();
innerFunc(); // Выведет "Внешняя переменная"

Область видимости и функции

Функции в JavaScript также создают свою собственную область видимости, называемую контекстом выполнения. Переменные, объявленные внутри функции, недоступны вне этой функции.

function outer() {
  var outerVar = "Внешняя переменная";

  function inner() {
    var innerVar = "Внутренняя переменная";
    console.log(innerVar); // innerVar доступна внутри функции inner()
  }

  console.log(outerVar); // outerVar доступна внутри функции outer()
  console.log(innerVar); // Ошибка: innerVar is not defined
}

outer();

Понимание области видимости в JavaScript

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

Стрелочка влевоФункции в JavaScript - параметры, объявление, возврат и переменныеСтрелочные функции в JavaScriptСтрелочка вправо

Все гайды по Javascript

Как работает метод trim() - JavaScriptКак работает метод toUpperCase() - JavaScriptКак работает метод toLowerCase() - JavaScriptКак работает метод substring() - JavaScriptКак работает метод startsWith() - JavaScriptКак работает метод split() - JavaScriptКак работает метод slice() - JavaScriptКак работает метод search() - JavaScriptКак работает метод replaceAll() - JavaScriptКак работает метод replace() - JavaScriptКак работает метод repeat() - JavaScriptКак работает метод padStart() - JavaScriptКак работает метод padEnd() - JavaScriptКак работает метод matchAll() - JavaScriptКак работает метод match() - JavaScriptКак работает метод localeCompare() - JavaScriptКак работает свойство length - JavaScriptКак работает метод lastIndexOf() - JavaScriptКак работает метод indexOf() - JavaScriptКак работает метод includes() - JavaScriptКак работает метод fromCodePoint() - JavaScriptКак работает метод fromCharCode() - JavaScriptКак работает метод endsWith() - JavaScriptКак работает метод concat() - JavaScriptКак работает метод codePointAt() - JavaScriptКак работает метод charCodeAt() - JavaScriptКак работает метод charAt() - JavaScript
Итератор в JavaScript
try...catch в JavaScriptError в JavaScript
Событие wheel в JavaScriptСобытие unload в JavaScriptСобытие touch в JavaScriptСобытие submit в JavaScriptСобытие scroll в JavaScriptСобытие reset в JavaScriptМетод .preventDefault() в JavaScriptСобытие mouseover в JavaScriptСобытие mouseout в JavaScriptСобытие load в JavaScriptСобытие keyup в JavaScriptСобытие keydown в JavaScriptСобытие invalid в JavaScriptСобытие input в JavaScriptСобытийная модель Event в JavaScriptОбъект события Event в JavaScriptСобытие DOMContentLoaded в JavaScriptСобытие dblclick в JavaScriptСобытие click в JavaScriptСобытие change в JavaScriptСобытие beforeunload в JavaScript
Как работает метод some() - JavaScriptКак работает метод reverse() - JavaScriptКак работает метод reduce() - JavaScriptКак работает метод map() - JavaScriptКак работает метод isArray() - JavaScriptКак работает метод indexOf() - JavaScriptКак работает метод includes() - JavaScriptКак работает метод from() - JavaScriptКак работает метод forEach() - JavaScriptКак работает метод flatMap() - JavaScriptКак работает метод flat() - JavaScriptКак работает метод findIndex() - JavaScriptКак работает метод find() - JavaScriptКак работает метод filter() - JavaScriptКак работает метод every() - JavaScriptМассивы в JavaScript
Открыть базу знаний