Javascript 如何实现此逻辑添加(1)(2)(1)。。高达(n)?

Javascript 如何实现此逻辑添加(1)(2)(1)。。高达(n)?,javascript,syntax,logic,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)(

我知道这个问题已经用有限的能力得到了回答,但我想用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
问题是,只有当我添加额外的空括号() 如果执行此操作
添加(1)(2)(3)


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

注意:代码未经测试

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

add(new Array(1,2,3));
函数添加(x){
var结果=0;
对于(i=0;i
试试这个:

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

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

    return fn;
}

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

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

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

这里的要点是启用特殊语法,如果您只想在函数中添加任意数字,甚至不需要数组。您应该提出您的问题clear@AndréPena问题很清楚,也许你在这种javascript编程风格方面没有足够的经验来理解它。我认为这很清楚。他想无限次地使用函数,而不必执行最后一个函数,立即获得值。这是不可能的,这些东西不能共存。但是,您可以滥用
toString
valueOf
。@elclars javascript可以在对象被视为字符串的情况下自动执行
toString
方法,因此这是可能的,它只是附带了一些警告,即它是一个可以作为字符串读取的对象。(例如,类型等于'function',以及其他一些小的奇怪问题)这就是我所说的“滥用”。+1但如果在
控制台中使用它,这将不起作用。log
值得一提的是
参数。被调用方
不应该再使用,而应该使用命名函数。