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 代码谁先执行、谁后执行
相关推荐
爱勇宝2 小时前
大多数人不是在使用 AI 赚钱,而是在帮 AI 公司赚钱
前端·后端·程序员
冬奇Lab3 小时前
每日一个开源项目(第143篇):page-agent - 纯 JS 的网页 GUI Agent,无需截图、无需插件、无需后端
前端·人工智能·agent
To_OC4 小时前
LC 994 腐烂的橘子:人人都说是 BFS 入门题,我却写了三遍才过
javascript·算法·leetcode
IT_陈寒7 小时前
React的这个渲染问题连官方文档都没说清楚
前端·人工智能·后端
追逐时光者9 小时前
别再满网找零散工具了,腾讯 QQ 浏览器这个“帮小忙”工具箱真能省时间
前端·后端
To_OC10 小时前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
Asmewill11 小时前
grep&curl命令学习笔记
前端
stringwu11 小时前
Flutter 开发必备:MVI 架构的高效实现指南
前端·flutter
用户21366100357212 小时前
Vue2组件化开发与父子通信
前端·vue.js
Momo__12 小时前
TypeScript satisfies 操作符——比 as 更安全的类型守门员
前端·typescript