每个函数的调用,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:
栈顶
栈底