调用栈是解析器的一种机制,可以在脚本调用多个函数时,跟踪每个函数在完成执行时应该返回控制的点。
当脚本要调用一个函数时,解析器把该函数添加到栈中并且执行这个函数。任何被这个函数调用的函数会进一步添加到调用栈中,并且运行到它们被上个程序调用的位置。当函数运行结束后,解释器将它从堆栈中取出,并在主代码列表中继续执行代码。
如果栈占用的空间比分配给它的空间还大,那么则会导致Stack Overflow(栈溢出)错误。我们的调用栈列表生不带来,死不带走,从一个空的调用栈开始,当所有代码执行完毕,我们得到的还是一个空的调用栈。
基本的原理就是,每当我的代码中有函数被调用,该函数就会自动添加到栈中,在执行完该函数的所有代码任务后,它就会自动从栈中删除。