我有兴趣看到Tail调用优化(TCO)等等。在Chrome调试器中,我只看到实际的调用堆栈而不是实际的帧,因此我不知道如何查看我的代码是否实际上是调试器中的TCO。
我希望直观地看到以下两个示例中使用(或未使用)帧的差异:
// Not optimized recursive function
function factorial(x) {
if (x <= 0) {
return 1;
} else {
return x * factorial(x-1); // (A)
}
}
// TCO version
function factorial(n) {
return facRec(n, 1);
}
function facRec(x, acc) {
if (x <= 1) {
return acc;
} else {
return facRec(x-1, x*acc); // (A)
}
}