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
1 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
value = f.apply(this, accumulated.shift()); ...function(x, y) { if (y > 0) { return sum(x + 1, y - 1)//undefined } ... }
其中f
是下面的function
,而sum(x + 1, y - 1)
为undefined
,如果你要return
值
return function accumulator() { if (!active) { ... } return 'return data here' };
添加回答
举报
0/150
提交
取消