--- title: Call stack slug: Словарь/Call_stack tags: - Glossary translation_of: Glossary/Call_stack ---
Стек вызовов(call stack) - это механизм для интерпретаторов (таких как интерпретатор JavaScript в веб-браузере) для отслеживания текущего местонахождения интерпретатора в скрипте, который вызывает несколько функций типа {{glossary("function","functions")}}, — какая из функций выполняется на данный момент, какие функции вызываются изнутри этой (выполняемой) функции, какая будет вызвана следующей и т. д.
function greeting() { // [1] Some codes here sayHi(); // [2] Some codes here } function sayHi() { return "Hi!"; } // Invoke the `greeting` function greeting(); // [3] Some codes here
Код выше будет выполнен следующим образом:
greeting()
.greeting().
Очередь стека вызовов:
- greeting
sayHi()
.sayHi()
помещается в очередь стека вызовов.Очередь стека вызовов:
- greeting
- sayHi
sayHi()
до самого конца.sayHi()
и продолжение выполнения оставшегося кода функции greeting()
.sayHi()
удаляется из очереди стека вызовов.Очередь стека вызовов:
- greeting
greeting()
выполнен, происходит возврат выполнения оставшейся части основного скрипта JS с места вызова функции greeting()
.greeting()
удаляется из очереди стека вызовов.Очередь стека вызовов:
ПУСТО
Выполнение кода началось с пустого стека вызовов, и всякий раз, когда мы вызывали функцию, она автоматически добавлялась в очередь стека вызовов, после выполнения всего своего кода она автоматически удалялась из очереди стека вызовов. И в конце выполнение кода также завершилось с пустым стеком вызовов.