代码执行分为执行上下文,可执行代码调用栈:,js引擎管理执行上下文的数据结构,先进后出的调用规则,例如:add函数调用栈,每一个上下文对应一部分的js执行代码,让后开启下一个上下文。以此类推栈溢出:调用栈是有大小的,当入栈的执行上下文超过一定数目,JavaScript就会报错尾递归优化: