我怎样才能实现这个逻辑add(1)(2)(1).. upto(n)?

时间:2013-12-24 06:59:04

标签: javascript syntax logic

我知道这个问题已经回答了有限的能力,但我想用n个参数n次?

function add(x) {
    return function(y) {
        if (typeof y !== 'undefined') {
            x = x + y;
            return arguments.callee;
        } else {
            return x;
        }
    };
}
add(1)(2)(3)(); //6
add(1)(1)(1)(1)(1)(1)(); //6

问题是这只有在我添加额外的空括号()时才有效 如果这样做add(1)(2)(3)

,它就不起作用

reference question

3 个答案:

答案 0 :(得分:4)

试试这个:

function add(x) {
    var fn = function(y) {
        x = x + y;
        return arguments.callee;
    };

    fn.toString = function(){  return x; };

    return fn;
}

答案 1 :(得分:0)

以下代码的工作方式与您提出的完全相同:

function add(a)
{
    var c=a,b=function(d){c+=d;return arguments.callee;};
    b.toString=function(){return c;}return b;
}

请注意,某些操作会检测作为函数给出的结果,但是任何需要字符串或整数的函数都会看到正确的值。

答案 2 :(得分:-2)

尝试将您的数字作为数组发送并更改功能代码以反映这些更改。

注意:代码未经测试。

function add(x) {
   var result = 0;
   for (i = 0; i < x.length;i++){
   result+=x[i];
   }
   return result;
}

add(new Array(1,2,3));