Javascript — это язык, в котором почти нет ничего похожего на Java, кроме названия. Чтобы понять какую-то странную часть Javascript, лучше сначала изучить несколько концепций Javascript.
Готовый? Давайте начнем.
Что такое контекст выполнения? На самом деле, это намного проще, чем звучит слово. Это детали среды, в которой выполняется код Javascript. Существует два типа контекста выполнения: глобальный и функциональный. Каждый контекст выполнения имеет свою собственную переменную среду и ссылку на внешнюю среду.
Давайте поймем контекст выполнения, прочитав код ниже:
Javascript работает синхронно, это означает, что ваш код запускается в одном контексте выполнения в одно и то же время. Когда приложение запускается, создается глобальный контекст выполнения A. При его создании настраивается как переменная среда (VEA), так и ссылка на внешнюю среду (Link A).
Когда строка 1 выполняется, движок javascript находит переменную «имя» в среде переменных (VEA) и устанавливает для нее значение «Даниэль». Затем, перед вызовом Greet(), глобальный контекст выполнения A помещается в стек. Создается контекст выполнения функции B. Опять же, во время создания движок Javascript создает переменную среду (VEB) и ссылку на внешнюю среду (ссылка B) для контекста выполнения B. Поскольку лексическое окружение функции приветствия() является глобальным, ссылка B указывает на ее внешнюю среду, которая ВЭА.
Когда код "console.log('привет,'+имя);" выполняется, движок javascript сначала ищет переменную «имя» в среде переменных VEB. Затем ссылка B ведет к следующему поиску в VEA. Переменная «имя» находится в VEA, и javascript отправляет вывод «привет, Дэниел».
Ссылки на внешнее окружение образуют цепочку, и движок javascript использует эту цепочку для поиска переменной. Мы называем эту цепочку Цепочка масштаба.
Теперь вы знаете, что Javascript ищет переменную в среде переменных через цепочку областей видимости. Вы можете использовать тест ниже, чтобы проверить свои новые знания.