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