如何使用序列调用和只有一个调用使函数工作

时间:2017-04-11 19:45:54

标签: javascript node.js function

我正在尝试使用这两个调用函数:

func(1)(2); // 3
func(1, 2); // 3;

我正在尝试做什么:

function func(x, y) {
  return (function(y) {
    return x + y;
  }(y));
}

但是当我尝试顺序调用时,这根本不起作用。还有其他方法可以实现吗?

function add(x, y) {
  if (y) return x + y;
  return function(y) {
    return x + y;
  };
}

这可行,但我认为这可能是更好的解决方案。

感谢。

2 个答案:

答案 0 :(得分:0)

您正在寻找的是currying,这是您可以做到的。

function add(a, b){
	if(typeof b !== 'undefined'){
		return a + b;		
	}else{
		return function(c){
			return a + c;
		}
	}
	
	
}


console.log(add(2, 3));

console.log(add(2)(3));

同时查看此答案How to Write a function where the output for both “sum(2,3)” and “sum(2)(3)” will be 5

答案 1 :(得分:0)

这是没有理由这样做的,IMO,你有一个函数func(1, 2),如果你想currify,只需用curry包装它,如果你使用{{} 1}},你可以使用lodash来修改一个函数,使你的函数干净