开发者社区> 问答> 正文

什么是执行栈?

展开
收起
前端问答 2019-11-24 20:09:34 1212 0
1 条回答
写回答
取消 提交回答
  • 前端问答小助手

    可以把执行栈认为是一个存储函数调用的栈结构,遵循先进后出的原则。

    image.png

    当开始执行 JS 代码时,首先会执行一个 main 函数,然后执行我们的代码。根据先进后出的原则,后执行的函数会先弹出栈,在图中我们也可以发现,foo 函数后执行,当执行完毕后就从栈中弹出了。

    平时在开发中,大家也可以在报错中找到执行栈的痕迹

    function foo() {
      throw new Error('error')
    }
    function bar() {
      foo()
    }
    bar()
    
    

    image.png

    大家可以在上图清晰的看到报错在 foo 函数,foo 函数又是在 bar 函数中调用的。

    当我们使用递归的时候,因为栈可存放的函数是有限制的,一旦存放了过多的函数且没有得到释放的话,就会出现爆栈的问题

    function bar() {
      bar()
    }
    bar()
    

    image.png

    2019-12-17 07:40:23
    赞同 1 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
如何使用Tair增强数据结构构建丰富在线实时场景 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载
低代码开发师(初级)实战教程 立即下载