Что такое 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, поможет вам отслеживать ошибки и избегать конфликтов. Понимание переменных и их области действия позволит вам создавать более эффективные программы с правильными именами. У вас будет лучше объявлять переменные и выбирать, какие переменные куда пойдут. При создании одной и той же глобальной переменной дважды в большой программе вы можете легко столкнуться с ошибками, но благодаря локальным областям действия вам не нужно полагаться на глобальные области для хранения данные. Что может сбивать с толку в долгосрочной перспективе или при работе над более крупными проектами.