Области действия JavaScript

Что вообще такое масштабы? Области — это текущий контекст кода. Они состоят из переменных, объектов и функций, к которым у вас есть доступ, и могут быть определены глобально или локально.

Глобальные и локальные области видимости переменных

У вас есть 2 типа областей видимости переменных — глобальные и локальные. Ваш глобальный может быть доступен отовсюду и в любом месте. Для локального доступа к этому можно получить доступ в пределах области действия функции. В качестве примера для человека представьте, что локальный охват — это раскрытие грязного маленького секрета вашему лучшему другу. С присягой секретности, ваш BFF не говорит ни слова о вашем секрете никому. Но с глобальным подумайте об этом как о твиттере, обновлении, обмене сообщениями, звонках и любой другой работе в социальных сетях, которая раскрывает ваш секрет. Теперь все знают твой грязный маленький секрет!

Два ключевых вопроса, которые следует задать себе при определении области видимости переменной:

  1. Он объявлен внутри функции?
  2. Он объявлен с ключевым словом var?
function myFunction(){
  y = 2;
  console.log(y);
}

Если переменная объявлена ​​в самой внешней области проекта, вне какой-либо функции, то это глобальная переменная.

var x = 1;               //I'm a global variable with global scope!
function myFunction(){
  y = 2;                 //I'm a local variable with local scope!
  console.log(x);
}
console.log(y); // Error!
console.log(x); // 1

Вы получите ReferenceError: y is not define. В данный момент y является глобальной переменной, которая хранится в функции myFunction, но не определена. Сначала вам нужно вызвать функцию, а затем уже существует глобальная переменная.

var x = 1;
function myFunction() {
  y = 2; 
  console.log(x);
}
myFunction(); // 1
console.log(y); // 2 - It works this time!
console.log(x); // 1

Из-за вызова myFunction глобальная переменная y существует, и console.log(y) будет работать!

Разговор о замыканиях

В JavaScript есть первоклассные функции. Это первоклассные объекты, поскольку они могут иметь свойства и методы, как и любой другой объект. Мы можем вызывать функции и легко их передавать.

Замыкания — это внутренние функции, которые имеют доступ к внешним, объемлющим переменным функции — цепочке областей видимости. У них есть 3 цепочки областей и есть доступ к:

  1. собственная область видимости (переменные, определенные в фигурных скобках)
  2. переменные внешней функции
  3. глобальные переменные

Краткое резюме

В двух словах

Все дело в перспективе, и прицелы именно такие. Перспектива.

Больше чтений

Все, что вы хотели знать о JavaScript Scope

Легко разбирайтесь в замыканиях в JavaScript