Основные концепции JavaScript
Bu yazıyı Türkçe olarak buradan okuyabilirsiniz.
В этом сообщении блога и, возможно, в следующих нескольких статьях я попытаюсь охватить основные понятия JavaScript и объяснить их вам в их простейшей форме.
Когда приложение JavaScript запускается, структура данных, называемая стеком, используется для хранения вызываемых функций и информации, которую они хранят, и это называется стеком выполнения. Структура данных стека работает по логике LIFO (Last in First Out) и имеет определенные ограничения. Чтобы понять эту структуру, давайте подумаем таким образом. Допустим, у нас есть коробка и тарелки. Предположим, мы можем перемещать только одну пластину за операцию. Теперь положим эти тарелки в коробку одну за другой.
Позже, когда мы захотим получить первую положенную нами тарелку, мы должны вынимать тарелки из коробки по порядку и по одной тарелке на каждом шагу. Назовем процесс помещения тарелок в коробку «толканием», а процесс распаковки — «выталкиванием». Мы можем кратко описать структуру стека следующим образом.
Теперь вернемся к стороне JavaScript и посмотрим, что именно хранится в стеке выполнения.
Контекст выполнения:
Такое определение, как структура, в которой хранится вся информация, определенная в функции, было бы правильным.
- Глобальный контекст выполнения
Даже когда мы запускаем приложение JavaScript, в котором мы не написали никакого кода, структура, созданная JavaScript, называется глобальным контекстом выполнения. При каждом запуске приложения JavaScript глобальный контекст выполнения сначала помещается в стек выполнения и создается глобальный объект. Имя объекта в браузере называется «window», и к нему можно получить доступ с помощью ключевого слова «this». - Функциональный контекст выполнения
Для каждой выполняемой функции в памяти выделяется специальное место, и вся информация об этой функции хранится здесь. Как только функции выполняются, их контекст выполнения создается и помещается в стек выполнения. Когда функция завершается, Контекст выполнения, принадлежащий этой функции, извлекается и удаляется из стека.
function foo(){ console.log('foo'); baz(); } function baz(){ console.log('baz'); } foo(); // output // foo // baz
Подводя итог тому, что произошло выше, скажем, что когда наш образец кода JavaScript запускается, он сначала создает глобальный контекст выполнения и глобальный объект, которые должны храниться в этом контексте, а затем в стек выполнения. Затем функция с именем foo вызывается с помощью foo(), и контекст выполнения этой функции создается и помещается в стек. После написания на экране «foo» функция с именем baz вызывается с помощью baz(). Поскольку мы еще не вышли из области действия функции foo, новый Контекст выполнения, созданный для функции baz, помещается поверх foo в область видимости. куча. (см. шаг 4) После этого на экране печатается «баз» и происходит выход из области действия функции с именем баз. По этой причине контекст выполнения baz сначала извлекается из стека выполнения. Позже, из-за выхода из области действия функции foo, ее контекст извлекается из стека выполнения. Поскольку больше нет кода для последующего запуска, из стека появится глобальный контекст выполнения, и программа завершится.
В простейшей форме мы можем суммировать стек выполнения и контекст выполнения таким образом. В следующей статье я попытаюсь объяснить этапы создания Контекста выполнения и Лексического окружения. До скорой встречи здесь снова.