如何在JavaScript中实现multicall功能?

时间:2015-09-28 12:03:03

标签: javascript

是否有任何变体可以在JS中实现添加功能?

console.log(add(1)(3)(5)(35)); // 44

可以有任意数量的函数调用。

1 个答案:

答案 0 :(得分:0)

您可以为该函数指定半私有属性,例如:

function doSum(sum, reset){
    doSum.sum = reset ? 0 : (doSum.sum || 0);
    doSum.sum += sum || 0;
    return !sum && !reset ? doSum.sum : doSum;
};

// calculate 1 + 2 + 3 + 4
var total   = doSum(1)(2)(3)(4)();

// reset, calculate 10 + 20 + 30 + 40
var total2  = doSum(10,true)(20)(30)(40)();

// continue, calculate total2 + 100 + 100 + 50
var total2a = doSum(100)(100)(50)();

// print result
document.querySelector('#result').textContent =
    'total   = ' + total + '\n' +
    'total2  = ' + total2 + '\n' +
    'total2a = ' + total2a;
<pre id="result"></pre>