js尾递归优化
看阮一峰老师的es6教程,尾递归的时候有一样不明白
相关代码
function tco(f) {
var value;
var active = false;
var accumulated = [];
return function accumulator() {
accumulated.push(arguments);
if (!active) {
active = true;
while (accumulated.length) {
value = f.apply(this, accumulated.shift());
console.log(value)
}
active = false;
return value;
}
};
}
var sum = tco(function (x, y) {
if (y > 0) {
return sum(x + 1, y - 1)
} else {
return x
}
});
console.log(sum(1, 3))
请问一下变量 value (不是最后一次的时候)为什么会等于undefined
其中
f
是下面的function
,而sum(x + 1, y - 1)
为undefined
,如果你要return
值