使用数组在javascript中关闭

时间:2015-11-11 18:23:33

标签: javascript arrays functional-programming closures

我正在尝试创建一个执行以下操作的闭包:

  

输入:参数f可以假设为一个函数,它接受一个整数并返回一个整数的参数。

     

输出:makeClosure应该返回一个恰好有两个函数的数组,我们称之为f1和f2。这两个函数应该包含在一个闭包中,该闭包还定义了一个名为' max'的共享变量。 (即' max'两者均可访问)。 '最大'应该通过makeClosure初始化为0。 f1应该是一个采用单个整数参数的函数,当且仅当其值大于max时,将max设置为该值。 f1应该不带参数,并返回调用f的结果,其中max为其参数。

这是我尝试过的代码,但不起作用。

function makeClosure(f) {
    function getMax(f1, f2) {
        var getMax = [];
        f.forEach(function(f1,f2) {
            getMax.push(Math.max.apply(null, f));
        });
    return getMax;
    }

1 个答案:

答案 0 :(得分:0)

function makeClosure(f) {
    var max = 0;
    return [
        function f1(v) {
            max = Math.max(max, v);
        }, function f2() {
            return f(max);
        }
    ];
}