JavaScript 什么是尾叫优化(TCO)
示例
TCO仅在严格模式下可用
与往常一样,请检查浏览器和Javascript实现是否支持任何语言功能,以及与任何JavaScript功能或语法一样,将来可能会更改。
它提供了一种优化递归和深层嵌套函数调用的方法,无需将函数状态推送到全局框架堆栈,并且不必直接返回到初始调用函数,而不必退出每个调用函数。
function a(){
return b(); //2
}
function b(){
return 1; //3
}
a(); //1如果没有TCO,则调用a()会为此功能创建一个新框架。当该函数调用b()的a()的帧被压入框架堆栈和功能创建一个新的帧b()
当b()返回到a()a()的帧被从帧堆栈中弹出。它立即返回到全局框架,因此不使用堆栈上保存的任何状态。
TCO意识到从a()to的调用b()在函数的尾部,a()因此不需要将a()状态压入帧堆栈。当b(0)返回而不是返回时a(),将直接返回到全局框架。通过消除中间步骤进一步优化。
TCO允许递归函数具有不确定的递归,因为帧堆栈不会随每个递归调用而增长。没有TCO递归功能的递归深度有限。
注意TCO是javascript引擎实现功能,如果浏览器不支持,则无法通过编译器实现。规范中没有实现TCO所需的其他语法,因此担心TCO可能会破坏网络。向世人发布它是谨慎的,可能需要为可预见的未来设置浏览器/引擎特定的标志。
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法