JS 底层探究-- 调用栈(Call Stack)

1. 一句话定义

调用栈 = JS 引擎用来记录「当前正在执行谁」「接下来要执行谁」的栈结构

遵循规则:后进先出(LIFO)

2. 执行规则

  1. 代码一开始运行 :全局执行上下文 先入栈
  2. 调用函数 :该函数的执行上下文入栈,JS 立刻执行它
  3. 函数执行完 :该函数上下文出栈,回到上一层
  4. 整个程序结束:全局上下文最后出栈,调用栈清空

例子

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 代码谁先执行、谁后执行
相关推荐
Highcharts.js2 分钟前
CSUN 2026|Highcharts无障碍数据与AI分享
javascript·人工智能·数据分析·highcharts·图表开发
Nymph_Zhu6 分钟前
vue3+element-plus 文件上传
前端·typescript·vue3·element-plus
熊猫钓鱼>_>7 分钟前
鸿蒙PC高分屏与键鼠交互适配:DPI缩放、右键菜单一次讲清
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙·鸿蒙心迹
echome88812 分钟前
CSS 布局:Flex 和 Grid 怎么选,附常见坑
前端·css·html
计算机魔术师18 分钟前
科技巨头砸7400亿押注AI,为什么苹果成了唯一赢家?
前端
系统集成-鹰翔27 分钟前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端
QianhangQianping28 分钟前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
octopus_c40 分钟前
C++ 运算符重载详解 && 日期类的实现
开发语言·c++
Eiceblue44 分钟前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
j7~1 小时前
【C++ 面试笔记】(篇二):类与数据抽象 & STL 容器与算法
开发语言·c++·面试·stl容器和算法·类和数据抽象