Что такое Scope в JavaScript?

Область видимости в JavaScript относится к тем переменным, к которым ваша программа имеет доступ в любой момент времени. Итак, давайте начнем копаться в этом прицеле ...

Какие бывают типы прицелов?

  • Глобальный охват
  • Объем функции
  • Область действия блока

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

Глобальные переменные

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

Локальные переменные

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

Если вы запустите этот код, глобальная переменная globalVar будет доступна внутри функции localScope. Однако доступ к локальной переменной localVar возможен только в области действия функции localScope, но не в глобальной области.

Вы можете думать о локальных прицелах как о дневнике. Представьте, что вы ребенок, который ведет дневник (местный прицел). Вы можете писать все, что хотите, в своем дневнике (т.е. создавать столько переменных, сколько хотите в функции) и называть события, которые произошли за пределами вашего дневника (доступ к глобальным переменным за пределами вашей функции или вызов других функций). Однако никто другой не может заглядывать в ваш дневник, ОСОБЕННО ваши родители ... кашель ... кашель ... ГЛОБАЛЬНЫЕ ОБЪЕМЫ. Подобно тому, как родитель не может заглянуть в дневник ребенка, вы не можете получить доступ к локальным переменным в глобальной области.

Объем функции

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

Если вы запустите этот код, переменная me в функции myMoney будет недоступна в функции ourMoney. Когда консоль регистрирует me в yourMoney, выдается ошибка.
Функции не имеют доступа к областям действия друг друга.

Область действия блока

Если вы объявляете переменную в фигурных скобках { }, как в операторе if или в цикле for, вы создаете область видимости блока.

Переменные ключевые слова

Переменные, объявленные с помощью ключевых слов let или const, имеют область действия блока.
Переменные, объявленные с помощью ключевого словаvar, имеют область действия. К переменным, объявленным с помощью var, можно получить доступ только внутри функции, в которой они были объявлены (или глобально, если они были объявлены в глобальной области видимости). Var имеет локальную область видимости только при объявлении внутри функции, что означает, что если переменная объявлена ​​внутри блока, к ней можно получить доступ за пределами этого блока.

Если вы запустите этот код, только переменная ключевого слова var будет регистрировать свое значение за пределами области блока оператора if. Этого не происходит с переменной blockScope, потому что она была объявлена ​​с ключевым словом let.

Тем не мение,

Если вы запустите этот код, переменная onlyFunctionScope будет недоступна вне функции varScope, потому что она была объявлена ​​с var, и это ключевое слово области видимости функции.

В заключение, создавая новую функцию или инструкцию блока (что-либо с фигурными скобками {}), вы создаете новую область. В целом понимание того, как работает область видимости в JavaScript, поможет вам отслеживать ошибки и избегать конфликтов. Понимание переменных и их области действия позволит вам создавать более эффективные программы с правильными именами. У вас будет лучше объявлять переменные и выбирать, какие переменные куда пойдут. При создании одной и той же глобальной переменной дважды в большой программе вы можете легко столкнуться с ошибками, но благодаря локальным областям действия вам не нужно полагаться на глобальные области для хранения данные. Что может сбивать с толку в долгосрочной перспективе или при работе над более крупными проектами.