导出功能需要设置为纯函数

时间:2017-05-07 05:55:46

标签: javascript recursion scope trampolines

在下面的Trampoline代码中,我将致电 我视图中的按钮onclick = export(add,5)。如何确保此调用始终返回5的值而不取消注释下面代码中//x=0的行?

var x = 0;

function repeat(operation, num) {
    return function () {
        if (num <= 0) {
            console.log(x);
            // x=0;
            return;
        }
        operation();
        return repeat(operation, --num);
    }
}

function trampoline(fn) {
    while (fn && typeof fn === 'function') {
        fn=  fn();
    }
}

this.export = function (operation, num) {
    trampoline(function () {
        return repeat(operation, num);
    });
}

function add()
{
    ++x;
}

基本上,我想要一个解决方案,其变量x的范围将确保程序在执行n次时总是返回相同的输出(换句话说,我想将'export'设置为纯函数)

0 个答案:

没有答案