Области действия JavaScript
Что вообще такое масштабы? Области — это текущий контекст кода. Они состоят из переменных, объектов и функций, к которым у вас есть доступ, и могут быть определены глобально или локально.
Глобальные и локальные области видимости переменных
У вас есть 2 типа областей видимости переменных — глобальные и локальные. Ваш глобальный может быть доступен отовсюду и в любом месте. Для локального доступа к этому можно получить доступ в пределах области действия функции. В качестве примера для человека представьте, что локальный охват — это раскрытие грязного маленького секрета вашему лучшему другу. С присягой секретности, ваш BFF не говорит ни слова о вашем секрете никому. Но с глобальным подумайте об этом как о твиттере, обновлении, обмене сообщениями, звонках и любой другой работе в социальных сетях, которая раскрывает ваш секрет. Теперь все знают твой грязный маленький секрет!
Два ключевых вопроса, которые следует задать себе при определении области видимости переменной:
- Он объявлен внутри функции?
- Он объявлен с ключевым словом
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 цепочки областей и есть доступ к:
- собственная область видимости (переменные, определенные в фигурных скобках)
- переменные внешней функции
- глобальные переменные
Краткое резюме
В двух словах
Все дело в перспективе, и прицелы именно такие. Перспектива.