Источник: Nuances of Programming Если коротко, стек вызовов — это стек, который управляет порядком выполнения функций. Другими словами, это механизм, который контролирует, какая функция будет выполнена и когда это произойдет. Стек представляет собой структуру данных, организованных по принципу LIFO, т.е. в порядке обратной очередности (last-in — first-out, последним вошел — первым вышел). Это означает, что первой будет выполняться последняя функция, внесенная в стек вызовов. Как функция попадает в стек вызовов? Когда код оценивается, каждая выполненная функция попадает в стек вызовов. Другой интересный вопрос: когда функция выходит из стека вызовов? Это произойдет только после завершения выполнения всех функций, которые были вызваны ею (если таковые были), и после того, как все строки кода внутри нее будут оценены. Типичный случай В случае ниже каждая функция завершается после выполнения всех строк кода внутри нее. function defense() {
console.log('I am the defense attorney')