JavaScript执行栈是后进先出的栈结构,用于管理函数调用顺序:函数调用时压入执行上下文,执行完毕即弹出;全局上下文最先入栈、最后出栈;报错信息中的“at”源自栈顶调用链;异步回调需待栈空后由事件循环调度入栈。

JavaScript 执行栈(Call Stack)是引擎用来管理函数调用顺序的机制,它是一个后进先出(LIFO)的栈结构,记录当前正在执行以及等待执行的函数。理解它,关键在于明白“谁在运行、谁在等、谁该退场”。
执行栈怎么形成?
每当一个函数被调用,JS 引擎就会把它的执行上下文(Execution Context)压入执行栈;函数执行完毕,就从栈顶弹出。全局代码也对应一个全局执行上下文,它最先入栈、最后出栈。
- 代码从上到下解析,但只有遇到函数调用才会触发入栈
- 同步代码会连续入栈、出栈;异步回调(如 setTimeout 回调)不直接入当前执行栈,要等调用时才入
- 栈顶永远是当前正在运行的函数
看个简单例子就清楚了
(下面代码运行时执行栈的变化)
function foo() { console.log('foo'); }
function bar() { foo(); }
bar();登录后复制
过程如下:
立即学习“Java免费学习笔记(深入)”;
标签: javascript java js 回调函数 栈
还木有评论哦,快来抢沙发吧~