Если и есть что-то, что сделает ваше путешествие по разработке программного обеспечения более гладким, так это понимание концепции масштаба.

Так что же такое, черт возьми, Scope и почему его важно понимать?

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

Javascript имеет 3 основных типа областей видимости:

  • Глобальный масштаб
  • Функциональный объем
  • Область блока

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

myName = 'Gabrielle';

он всегда будет глобальным.

если вы добавите его внутри такой функции:

function employee() {
  name = 'Gabrielle'
return 'employee() function invoked'
}
employee();
// => employee() function invoked'

name;
// => 'Gabrielle'

В этом случае name = ‘Gabrielle’ по-прежнему имеет глобальную область действия, даже если вызывается внутри функции. Лучше всего при написании кода убедиться, что вы делаете переменные и функции доступными там, где они нужны.

Функциональный объем:

По словам моего инструктора из Принстона: «Все, что происходит в функции, остается в функции». Функции создают свою собственную область видимости. Переменная, определенная исключительно внутри этой функции, недоступна ни для чего во внешних областях.

Объем блока:

Блочные операторы также создают свою собственную область видимости. Он доступен внутри блока и не может быть доступен ничему во внешних областях. Переменные, объявленные с помощью let и const, имеют область действия блока.

Приведенный выше пример работает, потому что переменная var используется глобально. Однако приведенный ниже пример не будет работать, потому что const используется для создания переменной с областью видимости блока, но мы записываем console.log вне блока.

Я надеюсь, что этот короткий пост помог закрепить разницу между уровнями охвата и в качестве дружеского напоминания:

  1. воздержитесь от использования var вместо этого, используйте let и const для объявления ваших переменных.
  2. «То, что происходит в функции, остается в функции» — каждая функция создает свою собственную область видимости.


Использованная литература: