【前端三剑客之JavaScript】调用栈

JavaScript 中有很多函数,经常会出现在一个函数中调用另外一个函数的情况,调用栈就是用来管理函数调用关系的一种数据结构。因此要讲清楚调用栈,你还要先弄明白函数调用和栈结构。

什么是函数调用?

函数调用就是运行一个函数,具体使用方式是使用函数名称跟着一对小括号。

当执行到 函数的时候,我们就有了两个执行上下文了——全局执行上下文和 函数的执行上下文。 JavaScript 引擎是通过一种叫栈的数据结构来管理这些执行上下文。 在执行上下文创建好后,JavaScript 引擎会将执行上下文压入栈中,通常把这种用来管理执行上下文的栈称为执行上下文栈,又称调用栈。 调用栈是 JavaScript 引擎追踪函数执行的一个机制,当一次有多个函数被调用时,通过调用栈就能够追踪到哪个函数正在被执行以及各函数之间的调用关系。

调用栈是有大小的,当入栈的执行上下文超过一定数目,JavaScript 引擎就会报错,我们把这种错误叫做栈溢出。特别是在写递归代码的时候,就很容易出现栈溢出的情况。 抛出的错误信息为:超过了最大栈调用大小(Maximum call stack size exceeded)

经验分享 程序员 微信小程序 职场和发展