1. 一句话定义
调用栈 = JS 引擎用来记录「当前正在执行谁」「接下来要执行谁」的栈结构
遵循规则:后进先出(LIFO)
2. 执行规则
- 代码一开始运行 :全局执行上下文 先入栈
- 调用函数 :该函数的执行上下文入栈,JS 立刻执行它
- 函数执行完 :该函数上下文出栈,回到上一层
- 整个程序结束:全局上下文最后出栈,调用栈清空
例子
TypeScript
// 全局上下文
console.log("全局开始");
function a() {
console.log("函数 a 执行");
b(); // 调用函数 b
}
function b() {
console.log("函数 b 执行");
}
a(); // 调用函数 a
console.log("全局结束");
4. 调用栈的作用
- 保证 JS 单线程、同步执行
- 追踪函数执行位置
- 报错时能看到调用栈轨迹(Chrome 控制台里的 stack trace)
总结
- 调用栈 :管理执行上下文的后进先出栈结构
- 执行流程:全局入栈 → 函数入栈 → 函数出栈 → 全局最后出栈
- 核心意义 :决定 JS 代码谁先执行、谁后执行