什么是执行栈
题干
- 执行栈
题解
执行栈(Execution Stack),也称为调用栈(Call Stack),是用来管理函数调用和执行上下文的一种数据结构。它是一个栈(先进后出)结构,用于跟踪代码的执行位置。
当 JS 引擎执行代码时,它会创建一个全局执行上下文,并将其推入执行栈的底部。然后,每当遇到函数调用时,引擎会创建一个新的执行上下文,并将其推入执行栈的顶部。这样,当前正在执行的函数的执行上下文位于执行栈的顶部,而调用该函数的函数的执行上下文位于其下方,以此类推。
执行栈的主要作用是跟踪函数的执行顺序和管理执行上下文。当函数执行完成后,其执行上下文会从执行栈中弹出,控制权回到调用该函数的位置,继续执行下一个函数。
执行栈的典型示例如下:
javascript
function foo() {
console.log("Hello from foo!");
bar();
}
function bar() {
console.log("Hello from bar!");
}
function baz() {
console.log("Hello from baz!");
}
foo();
baz();
在上述示例中,当 foo
函数被调用时,它的执行上下文被推入执行栈的顶部。然后,foo
函数内部调用了 bar
函数,引擎会创建 bar
函数的执行上下文并推入执行栈。当 bar
函数执行完成后,它的执行上下文从执行栈中弹出,控制权回到 foo
函数,继续执行下一个语句。最后,当所有函数执行完成后,全局执行上下文从执行栈中弹出,程序执行结束。