gpt4 book ai didi

javascript - 当本身不支持时,像 Babel 这样的转译器如何实现尾部调用优化?

转载 作者:行者123 更新时间:2023-11-29 19:24:50 25 4
gpt4 key购买 nike

即使使用 trampoline/bind,无限递归也应该在每次迭代中占用更高的内存/时间,那么即使目前不支持,Babel 如何实现这一点?

最佳答案

Babel 尝试将递归重写为一个简单的循环,您可以在 the example 中看到他们在文档中给出:

function factorial(n, acc = 1) {
"use strict";
if (n <= 1) return acc;
return factorial(n - 1, n * acc);
}

被重写为

"use strict";

function factorial(_x2) {
var _arguments = arguments;
var _again = true;

_function: while (_again) {
var n = _x2;
acc = undefined;

"use strict";
_again = false;
var acc = _arguments[1] === undefined ? 1 : _arguments[1];
if (n <= 1) return acc;
_arguments = [_x2 = n - 1, n * acc];
_again = true;
continue _function;
}
}

关于javascript - 当本身不支持时,像 Babel 这样的转译器如何实现尾部调用优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31204779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com