JS调用栈(执行上下文栈)

本文解释了JavaScript中函数调用如何创建执行上下文并压入调用栈,堆栈溢出问题的成因,以及如何通过减少执行上下文数量来避免该问题。通过示例代码展示了压栈和出栈的过程。
摘要由CSDN通过智能技术生成

每个函数的调用,JS引擎都会为其创建执行上下文,并把执行上下文压入调用栈,函数执行完成后,会被弹出调用栈。当调用栈空间被占满时,会引发堆栈溢出的问题,此时应该去减少栈中执行上下文的数量来解决这一问题。
压栈出栈例子:

(function() {
  var a = 2
  function add(b, c) {
    return b+c
  }
  function addAll(b, c) {
    var d = 10
    result = add(b,c)
    return a+result+d
  }
  console.log(addAll(3,6));
})()

1:
栈顶


全局执行上下文


栈底
2:
栈顶


addAll执行上下文
全局执行上下文


栈底
3:
栈顶


add执行上下文
addAll执行上下文
全局执行上下文


栈底
4:
栈顶


addAll执行上下文
全局执行上下文


栈底
5:
栈顶


全局执行上下文


栈底
6:
栈顶



栈底

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值