请问一下 js递归的优化(尾递归的问题)

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


牧羊人nacy
浏览 1074回答 1
1回答

芜湖不芜

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'     };
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript