Javascript 函数接受可变数量的链式调用,如'add(1)(2)(3)(4)`

Javascript 函数接受可变数量的链式调用,如'add(1)(2)(3)(4)`,javascript,Javascript,我想实现一个函数,它可以接受任意数量的链式调用,比如 add(1)(2); // 3 add(1)(2)(3); // 6 add(1)(2)(3)(4); // 10 如果我像下面这样实现它,它将只接受第一次调用 我需要像下面这样写才能接受第二个电话 function add(n){ return function add_impl(a) { return function add_impl2(b) { return n + a + b; } } }

我想实现一个函数,它可以接受任意数量的链式调用,比如

add(1)(2); // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
如果我像下面这样实现它,它将只接受第一次调用

我需要像下面这样写才能接受第二个电话

function add(n){
  return function add_impl(a)
  {
   return function add_impl2(b)
   {
     return n + a + b;
   }
  }
}

我想让它成为通用的,这样就可以传递任意数量的参数。

您可以这样做

int foo(int... args) {
    int total = 0;
    for (int arg : args) {
        total = total + arg;
    }
    return total;
}

您可以这样做,但最后仍然需要一个空值,以便让函数知道您的计算已经完成

var a=0; 函数地址{ if.length{ a+=n; 返回添加; } 返回a; } var x=add2345;
console.logx;我认为你可能需要至少在最后再计算一次,但无论如何,这通常被称为“咖喱”,我几乎看不出这有什么意义。接受可变数量参数的add函数可能是实用的,但这不是。函数传递参数add1,2,3,4@gjha只需使用Y-组合子,即不动点组合子。在这种情况下,函数将能够通过Y点调用函数本身。@gjha这与Church数字相同。您可以轻松地在谷歌上搜索它,并根据教堂数字进行完整的计算。
int foo(int... args) {
    int total = 0;
    for (int arg : args) {
        total = total + arg;
    }
    return total;
}