是否可以在JavaScript中创建一个仿函数?

the*_*row 14 javascript functional-programming functor

我正在尝试创建一个保持状态但用foo()调用的函数.
可能吗?

Ion*_*tan 28

我相信这就是你想要的:

var foo = (function () {
    var state = 0;

    return function () {
        return state++;
    };
})();
Run Code Online (Sandbox Code Playgroud)

或者,遵循维基百科示例:

var makeAccumulator = function (n) {
    return function (x) {
        n += x;
        return n;
    };
};

var acc = makeAccumulator(2);

alert(acc(2)); // 4
alert(acc(3)); // 7
Run Code Online (Sandbox Code Playgroud)

JavaScript是其中一种语言,恕我直言,作为一等公民的功能的极好支持.

  • foo示例没有返回值.我添加了一个返回,以便它应该按预期运行. (3认同)